[Java] 백준 2501번: 약수 구하기

U·2023년 3월 15일

백준

목록 보기
25/116

💻 문제


일단 이해하자🤔

  • 처음엔 자연스럽게 약수들만 모아둔 배열을 만들고 그 안에서 K번째로 작은 수를 구하려고 했으나 쉽지 않아 아예 다른 로직을 생각했다.
  • 1부터 N까지, N을 나눴을때 나누어 떨어지는 수가 나올때마다 count를 했으며 이 count가 K와 같을때 그때의 약수를 출력했으며 for문을 다 돌았는데도 count가 K와 같지 않고 작다면 0을 출력하도록 했다. 생각보다 간단했던 로직 완성!

👀 풀이

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));

        String str = bfr.readLine();
        StringTokenizer st = new StringTokenizer(str, " ");

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());
        int divisor;
        int count = 0;


        for (int j = 1; j <= N; j++) {
            if (N % j == 0) {
                divisor = j;
                ++count;

                if (count == K) {
                    bfw.write(String.valueOf(divisor));
                    break;
                }
            }
        }

        if (count < K) {
            bfw.write("0");
        }

        bfr.close();
        bfw.flush();
        bfw.close();
    }
}
profile
백엔드 개발자 연습생

0개의 댓글