본문 바로가기

알고리즘/약수, 배수와 소수 단계

[백준][2501] 약수 구하기

728x90

https://www.acmicpc.net/problem/2501

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net

문제 풀이

1. 1부터 N 까지 루프를 돌려 (N % index == 0) 인 index 를 result list 에 저장한다.

2. result list 의 크기가 K 보다 작으면 조건에 따라 0을 출력 한다.

3. result list 의 크기가 K 보다 크거나 같으면 (K - 1)번째의 값을 출력한다.

코드

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val (N, K) = br.readLine().split(" ").map { it.toInt() }

    val result = mutableListOf<Int>()

    for (i in 1..N) {
        if (N % i == 0) {
            result.add(i)
        }
    }

    //println(result.toString())

    if (result.size >= K) {
        println(result[K - 1])
    } else {
        println(0)
    }
}
728x90

'알고리즘 > 약수, 배수와 소수 단계' 카테고리의 다른 글

[백준][5086] 배수와 약수  (1) 2024.04.23