Algorithm๐Ÿฅ‡

17087.์ˆจ๋ฐ”๊ผญ์งˆ6

hae02y 2023. 10. 19. 16:00
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ N๋ช…๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  S์— ์žˆ๊ณ , ๋™์ƒ์€ A1, A2, ..., AN์— ์žˆ๋‹ค.

์ˆ˜๋นˆ์ด๋Š” ๊ฑธ์–ด์„œ ์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— X+D๋‚˜ X-D๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ ๋™์ƒ์ด ์žˆ๋Š” ์œ„์น˜์™€ ๊ฐ™์œผ๋ฉด, ๋™์ƒ์„ ์ฐพ์•˜๋‹ค๊ณ  ํ•œ๋‹ค.

๋ชจ๋“  ๋™์ƒ์„ ์ฐพ๊ธฐ์œ„ํ•ด D์˜ ๊ฐ’์„ ์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ€๋Šฅํ•œ D์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N(1 โ‰ค N โ‰ค 105)๊ณผ S(1 โ‰ค S โ‰ค 109)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ๋™์ƒ์˜ ์œ„์น˜ Ai(1 โ‰ค Ai โ‰ค 109)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋™์ƒ์˜ ์œ„์น˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋ฉฐ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜์™€ ๊ฐ™์ง€ ์•Š๋‹ค.

์ถœ๋ ฅ

๊ฐ€๋Šฅํ•œ D๊ฐ’์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ๋ฆ„

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” ๊ฐ’๋“ค์ด ์กฐ๊ธˆ ๋ชจํ˜ธํ•˜๊ฒŒ ์ ํ˜€์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” D๋Š” ์ˆ˜๋นˆ์ด๊ฐ€ ํ•œ๋ฒˆ์— ์›€์ง์ผ์ˆ˜์žˆ๋Š” ๋ณดํญ์œผ๋กœ ๋ณด๋Š”๊ฒƒ์ด ๋งž๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด D๊ฐ’์ด 2์ด๋ฉด 2,4,6,8... ๋กœ๋งŒ ์›€์ง์ผ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด๊ณ , 13์ด๋ฉด 13,26,39...์œผ๋กœ ์›€์ง์ผ์ˆ˜์žˆ๋Š”๊ฒƒ์ด๋‹ค.

์ด๊ฒƒ์„ ๋Œ€์ž…ํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ’€์ˆ˜์žˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

1 O 3 O O O 7 O O O 11

  • ์ˆ˜๋นˆ์ด๋Š” 3๋ฒˆ์—์„œ ์ถœ๋ฐœํ•œ๋‹ค.
  • ๋ณดํญD๋กœ ์–‘์ชฝ์œผ๋กœ ์›€์ง์ด๋ฉฐ ๋ชจ๋“  ๋™์ƒ(1,7,11)์„ ์ฐพ์œผ๋ ค๋ฉด D = 2์ผ๊ฒƒ์ด๋‹ค.
  • 1๊นŒ์ง€ abs(3-2)๋กœ ๋ฐฉ๋ฌธ ๊ฐ€๋Šฅํ•˜๊ณ , 7๊นŒ์ง€ abs(3+2*2)๋กœ ๋ฐฉ๋ฌธํ•˜๊ณ , 11๊นŒ์ง€ abs(3+2*4)๋กœ ๋ฐฉ๋ฌธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฝ”๋“œ

์ฒซ๋ฒˆ์งธ ์‹œ๋„

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  

public class ์ˆจ๋ฐ”๊ผญ์งˆ6 {  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  

        String[] split = br.readLine().split(" ");  

        int n = Integer.parseInt(split[0]); //๋™์ƒ์˜ ์ˆ˜  
        int subin = Integer.parseInt(split[1]); //์ˆ˜๋นˆ์ด ์œ„์น˜  

        String[] split1 = br.readLine().split(" ");  

        int res = 0;  

        int[] arr = new int[n];  

        for(int i=0; i<n; i++){  
            //์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜์˜ ์ฐจ๋ฅผ ๊ตฌํ•ด์ค€๋‹ค.  
            int brother = Integer.parseInt(split1[i]);  
            arr[i] = Math.abs(brother-subin);  
        }  

        if(n == 1){  
            res = Math.abs(arr[0]-subin);
        }else {  
            res = arr[0];  
            for(int i=1; i<n; i++){  
                res = gcd(res,arr[i]);  
            }  
        }  

        System.out.println(res);  
        br.close();  
    }  

    public static int gcd(int a, int b){  
        if(b == 0){  
            return a;  
        }  
        return gcd(b, a%b);  
    }  
}

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‹ˆ ์‹คํŒจํ•˜์˜€๋‹ค.
์ž์„ธํžˆ๋ณด๋‹ˆ if(n == 1){res = Math.abs(arr[0]-subin); ์ด๋ถ€๋ถ„์ด ๋ฌธ์ œ์˜€๋‹ค. ์œ„์—์„œ arr[0]์—์„œ ์ด๋ฏธ abs๊ฐ’์„ ๊ตฌํ•ด๋†“๊ณ  ํ•œ๋ฒˆ๋” ๊ณ„์‚ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค... ๋ฐ”๋ณด

๋‘๋ฒˆ์งธ์‹œ๋„

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  

public class ์ˆจ๋ฐ”๊ผญ์งˆ6 {  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  

        String[] split = br.readLine().split(" ");  

        int n = Integer.parseInt(split[0]); //๋™์ƒ์˜ ์ˆ˜  
        int subin = Integer.parseInt(split[1]); //์ˆ˜๋นˆ์ด ์œ„์น˜  

        String[] split1 = br.readLine().split(" ");  

        int res = 0;  

        int[] arr = new int[n];  

        for(int i=0; i<n; i++){  
            //์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜์˜ ์ฐจ๋ฅผ ๊ตฌํ•ด์ค€๋‹ค.  
            int brother = Integer.parseInt(split1[i]);  
            arr[i] = Math.abs(brother-subin);  
        }  
        res = arr[0];  

        if(n != 1){  
            for(int i=1; i<n; i++){  
                res = gcd(res,arr[i]);  
            }  
        }  

        System.out.println(res);  
        br.close();  
    }  

    public static int gcd(int a, int b){  
        if(b == 0){  
            return a;  
        }  
        return gcd(b, a%b);  
    }  
}

์„ฑ๊ณต!

๋‹ต์„ ์•ˆ์ฐพ์•„๋ณด๊ณ ๋Š” ํ’€๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋ผ๋Š”๊ฒƒ์„ ์ƒ๊ฐํ• ์ˆ˜์žˆ์„๋•Œ๊นŒ์ง€ ์—ฐ์Šตํ•ด์•ผ ๋˜๊ฒ ๋‹ค.

๋ฐ˜์‘ํ˜•