본문 바로가기

백준

[백준] 최대공약수 1850번

728x90

코드 힌트

  1. Buffered 사용하여 받고 출력하기
    • BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다.
    • BufferedReader는 입력을 받고, BufferedWriter는 출력을 담당합니다.
    • (Java) 숫자로 변환할 때 long타입으로 받아야합니다.
  2. 최대공약수 구하기
    • 유클리드 호제법을 사용하여 두 수의 최대공약수를 구합니다.
    • 유클리드 호제법은 반복적으로 나머지를 구하여 최대공약수를 찾는 방법입니다.
    • 최대공약수 구하는 방법은 여기를 클릭하세요
  3. "1"를 최대공약수 만큼 출력시키기
    • 구한 최대공약수의 값만큼 '1'을 출력합니다.
    • 예를 들어, 최대공약수가 5이면 '1'을 5번 출력합니다.

 

 


정답은 더보기 클릭

더보기
import java.io.*;

public class Main {
    
    public static void main(String[] args) throws IOException {
        // BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다.
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // 입력된 두 수를 공백으로 구분하여 배열에 저장합니다.
        String[] arr = br.readLine().split(" ");
        
        // 문자열 배열의 첫 번째와 두 번째 요소를 long 타입으로 변환하여 변수 n과 m에 저장합니다.
        long n = Long.parseLong(arr[0]);
        long m = Long.parseLong(arr[1]);
        
        // 유클리드 호제법을 사용하여 최대공약수를 구합니다.
        while (m != 0) {
            long tmp = n % m; // n을 m으로 나눈 나머지를 tmp에 저장합니다.
            n = m; // n을 m으로 업데이트합니다.
            m = tmp; // m을 tmp로 업데이트합니다.
        }
        
        // 최대공약수의 값이 1일 때까지 "1"을 출력합니다.
        while(n > 0) {
            bw.write("1");
            n--;
        }
        
        // BufferedWriter를 비우고 닫습니다.
        bw.flush();
        bw.close();
    }
}
728x90

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

[백준] 그림 1926번  (0) 2024.07.31
[백준] 수 찾기 1920번  (0) 2024.07.30
[백준] 피보나치 함수 1003번  (0) 2024.07.27
[백준] 커트라인 25305번  (0) 2024.07.27
[백준] 대표값2 2587번  (0) 2024.07.27