백준 알고리즘 - 코틀린 풀이
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
1. 문제


2. 정답
<kotlin />
import java.util.*
fun main() {
val sc = Scanner(System.`in`)
val n = sc.nextInt()
val m = sc.nextInt()
var min = m
var sum = 0
var count = 0
for (i in n..m) {
if (calcDivisor(i)) {
count++
sum += i
if (i < min) {
min = i
}
}
}
if (count == 0) {
println("-1")
} else {
println(sum)
println(min)
}
}
fun calcDivisor(n: Int): Boolean {
var dCount = 0
for (i in 1 until(n)) {
if (n % i == 0) {
dCount++
}
}
return dCount == 1
}
3. 풀이
해당 문제는 두 수를 입력받고 그 사이에 소수들의 합과 최솟값을 출력하는 문제입니다.
calcDivisor에서 인수로 주어진 숫자가 소수인지를 판별하고, 소수라면 count를 1증가시킨 후 sum에 누적합을 시킵니다.
이 때, count는 문제에서 주어진 조건인 소수가 없을 때 -1을 출력하기 위함입니다.
아래 코드에선 최솟값을 비교하기 위해 주어진 숫자가 소수일 때 최솟값 보다 작으면 최솟값을 갱신시킵니다.
<code />
if (i < min) {
min = i
}
감사합니다.
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 대지(9063번) - 코틀린 풀이 (0) | 2023.09.22 |
---|---|
[백준 알고리즘] 약수 구하기(2501번) - 코틀린 풀이 (0) | 2023.09.22 |
[백준 알고리즘] 너의 평점은(25206번) - 코틀린 풀이 (0) | 2023.09.13 |
[백준 알고리즘] 공 넣기(10810번) - 코틀린 풀이 (0) | 2023.09.11 |
[백준 알고리즘] 오븐시계(2525번) - 코틀린 풀이 (0) | 2023.09.08 |