코깽이의 코딩일기

Java 백준 17087 숨바꼭질 6 본문

PS/백준

Java 백준 17087 숨바꼭질 6

코깽이 2024. 2. 13. 16:43
반응형

백준 링크

https://www.acmicpc.net/problem/17087


문제

입력

출력

입출력 예시

 


제출한 코드

import java.io.*;
import java.util.*;

class Main {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer st;
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws Exception {
		st = new StringTokenizer(br.readLine());

		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		int[] data = new int[N];
        
		st = new StringTokenizer(br.readLine());
        
		for (int i = 0; i < N; i++) {
			data[i] = Math.abs(M - Integer.parseInt(st.nextToken()));
		}

		int start = data[0];
        
		for(int i = 1 ; i < N;i++) {
			start = GCD(start, data[i]);
		}
		System.out.println(start);
	}

	static int GCD(int a, int b) {
		int gcd = 0;
		while (b > 0) {
			gcd = a % b;
			a = b;
			b = gcd;
		}
		return a;
	}
}

 

현재 수빈이의 위치에서 각 동생들과의 거리들의 최대 공약수를 구하면 되는 문제이다.

 

1. 수빈이의 위치를 기준으로 각 동생들의 위치에 대한 input을 구한다.

2. 음수가 나올 수 있기에 Math.abs()를 이용해 절대값으로 변경 후 배열에 저장.

2. 최대 공약수를 구하는 공식인 GCD를 이용을 활용한다.

3. 배열에 저장된 값을 for문으로 순회하면서 전체 value에 대한 GCD를 구해준다.

반응형

'PS > 백준' 카테고리의 다른 글

Java 백준 14923 미로 탈출  (0) 2024.04.01
Java 백준 1342 행운의 문자열  (0) 2024.02.13
Java 백준 24511 queuestack  (1) 2024.02.13
Java 백준 1448 삼각형 만들기  (0) 2024.02.13
Java 백준 1342 행운의 문자열  (0) 2024.02.05