개발새발 - IT 기술블로그
article thumbnail

백준 알고리즘  - 코틀린 풀이

 

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

 

2501번: 약수 구하기

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

www.acmicpc.net

 


 

 

1. 문제


 

2. 정답

 

<code />
import java.util.* fun main() { val sc = Scanner(System.`in`) val N = sc.nextInt() val K = sc.nextInt() val array = ArrayList<Int>() for(i in 1.. N) { if (N % i == 0) { array.add(i) } } if (array.size >= K) { println(array[K-1]) } else { println("0") } }

 

 

3. 풀이

해당 문제는 두 수를 입력받아 첫번째 숫자의 약수들 중 두번째 숫자 번째 수를 출력하는 문제입니다.

 

기본적으로 약수는 숫자를 나누었을 때 나머지가 0이되는 수들의 집합입니다.

 

따라서 아래와 같이 N을 i로 나누었을 때 나머지가 0이라면 소수로 판단하고 ArrayList<Int>에 add 시킵니다. 

<code />
for(i in 1.. N) { if (N % i == 0) { array.add(i) } }

 

다음은 문제에서 주어진 조건인 K번째 약수가 존재하는지를 비교하고 약수 혹은 0을 출력하는 코드입니다.

 

이 때, 약수 비교는 1부터 시작했지만 배열의 인덱스는 0부터 시작하기 때문에, K가 아닌 K-1을 인덱스로 선언합니다.

<code />
if (array.size >= K) { println(array[K-1]) } else { println("0") }

 

 

감사합니다.