본문 바로가기
알고리즘

[백준/JAVA] 9094. 수학적 호기심

by 상후 2022. 1. 24.
728x90
반응형

 

 

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 : https://www.acmicpc.net/problem/9094

출처 : 백준

풀이 방법
간단한 완전탐색 문제
입력/구현의 분리에 대해 생각하고 토론했다.
출력도 한번에 처리하는게 속도면에서는 우수하다.

시간 복잡도 : O(N^2)

 

내 코드(JAVA)

 

public class Sanghoo {

    static int[][] testCase;

    public static void main(String[] args) throws IOException {
        try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            StringBuilder sb = new StringBuilder();
            int testCaseCount = Integer.parseInt(br.readLine());
            testCase = new int[testCaseCount][];

            // 입력
            for(int i=0; i<testCaseCount; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());

                int n = Integer.parseInt(st.nextToken());
                int m = Integer.parseInt(st.nextToken());
                testCase[i] = new int[]{n,m};
            }

            // 구현
            for(int i=0; i<testCaseCount; i++) {
                int n = testCase[i][0];
                int m = testCase[i][1];

                sb.append(calculate(n,m)).append("\n");
            }
            System.out.println(sb);
        }
    }
	
    // 정수의 개수 반환
    private static int calculate(int n, int m) {
        int integerCount = 0;
        double result;

        for(double a=1; a<n-1; a++) {
            for(double b=a+1; b<n; b++) {
                result = (a*a + b*b + m) / (a*b);
                if(result == (int) result) integerCount++;
            }
        }
        return integerCount;
    }

}

 

728x90
반응형

댓글