반응형
17087번 - 숨바꼭질 6
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken()); // 위치 X와 같음
int[] locatesBro = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
locatesBro[i] = Integer.parseInt(st.nextToken());
locatesBro[i] = Math.abs(S - locatesBro[i]);
}
int resultMax = locatesBro[0];
for (int j = 1; j < N; j++) {
resultMax = gcd(resultMax, locatesBro[j]);
}
bw.write(String.valueOf(resultMax));
bw.flush();
bw.close();
}
private static int gcd(int resultMax, int i) {
if (resultMax % i == 0) {
return i;
} else {
return gcd(i, resultMax % i);
}
}
}
정답을 맞춘 풀이방법
1 . 수빈이의 위치와 동생들 사이의 각각의 거리를 구해서 선언한 배열에 절대값으로 넣어줌
2. 움직이는 거리 D는 일정하게 움직여야 하며, 최대값은 각각의 거리들의 최대 공약수임
3. 유클리우드 호제법의 반복을통해 N개의 위치에 대한 최대공약수(gcd)를 출력
반응형
'알고리즘 > 백준 문제[추후 옮길예정]' 카테고리의 다른 글
[JAVA] 백준 2089번 (0) | 2021.05.18 |
---|---|
[JAVA] 백준 1373번 (0) | 2021.05.17 |
[JAVA] 백준 9613번 (0) | 2021.05.16 |
[JAVA] 백준 2004번 (0) | 2021.05.16 |
[JAVA] 백준 1676번 (0) | 2021.05.16 |