백준 - 1850번 - 최대공약수

이상훈·2023년 4월 18일
0
post-custom-banner

1850번

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

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st  = new StringTokenizer(bf.readLine());
		long A = Long.parseLong(st.nextToken());
		long B = Long.parseLong(st.nextToken());

		for (long i = 0; i<solve(A, B); i++) {
			sb.append("1");
		}

		System.out.println(sb);
	}

	static long solve(long A, long B) {
		long R = 0;
		while (B != 0) {
			R = A % B;
			A = B;
			B = R;
		}

		return A;
	}
}

풀이


1로만 구성된 숫자들의 최대공약수를 구하는 문제다.

입력값에 1이 몇개로 구성된 숫자인지 나타내는 두개의 숫자가 주어진다.

입력 3,4
111, 1111

위와 같이 1로 숫자를 변환하고 최대공약수를 유클리드 호제법으로 구하려 했는데 숫자 범위가 초과해서 오류가 떴다.

그래서 입력받은 값을 1로 변환하지않고 그대로 최대공약수를 구하고 나온 숫자를 1로 변환하였는데 시간초과가 나왔다.

그래서 1로 변환하는 로직을 StringBuilder를 사용하여 통과가 되었다.

post-custom-banner

0개의 댓글