Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 2312번] 수 복원하기 - Java //Wello Horld//

koucop 2020. 1. 3. 14:53

이번에는 BOJ의 2312번 문제 "수 복원하기" 를 풀어보도록 하자

 

입력으로 첫째 줄에 테스트 케이스의 수가 주어지고, 다음 줄부터 양의 정수 N이 주어진다.

출력으로 가 테스트 케이스마다 각 인수와 그인수가 곱해진 횟수를 인수가 증가하는 순으로 출력하면 되는 문제이다.

성공한 코드는 아래와 같다.

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

public class sample {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            int N = Integer.parseInt(br.readLine());
            int[] arr = new int[100001];
            for(int j = 2; j * j <= N; j++){
                if(N % j == 0){
                    N /= j;
                    arr[j]++;
                    j--;
                }
            }
            if(N > 1) {
                arr[N]++;
            }
            for(int j = 1; j <= 100000; j++){
                if(arr[j] != 0){
                    bw.write(j + " " + arr[j] + "\n");
                }
            }
        }

        bw.flush();
        br.close();
        bw.close();
    }
}

 

 

문제 : https://www.acmicpc.net/problem/2312

 

2312번: 수 복원하기

첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.

www.acmicpc.net

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.