[SWEA] 17937 큰 수의 최대공약수 (Java)

오태호·2023년 11월 2일
0

SWEA

목록 보기
2/7
post-thumbnail

1.  문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYmRI_8ajv8DFARi

2.  소스코드

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

public class Solution {
    static StringBuilder answer = new StringBuilder();
    static Reader scanner = new Reader();

    static int testNumber;
    static String firstNumber;
    static String secondNumber;

    static void input() {
        firstNumber = scanner.next();
        secondNumber = scanner.next();
    }

    static void solution() {
        if(firstNumber.equals(secondNumber)) {
            answer.append(firstNumber).append('\n');
            return;
        }

        answer.append(1).append('\n');
    }

    public static void main(String[] args) {
        int T = scanner.nextInt();
        testNumber = 1;

        for(int test = 1; test <= T; test++) {
            answer.append('#').append(test).append(' ');
            input();
            solution();
        }

        System.out.print(answer);
    }

    static class Reader {
        BufferedReader br;
        StringTokenizer st;

        public Reader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }
    }
}

3.  접근

  • 입력으로 들어오는 숫자의 범위가 1 이상 1010010^{100} 이하이기 때문에 실제로 최대공약수를 구하는 것은 불가능하다.
  • 우리가 구하고자 하는 것은 주어진 두 숫자를 포함하여 두 숫자 사이의 모든 숫자들에 대한 최대공약수인데 생각해보면 인접한 두 수 사이의 최대공약수는 1이고, 그렇기 때문에 두 숫자가 같지 않다면 항상 최대공약수는 1이 될 것이다.
  • 만약 두 숫자가 같다면 범위 안에 존재하는 숫자가 하나이기 때문에 해당 수가 최대공약수가 될 것이다.
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글