문제 링크 - https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
문제 설명
주어진 두 수 m, n을 포함하여 그 사이에 존재하는 소수의 합계값과 그 소수들 중 최소값을 출력 (소수가 없는 경우 -1 출력)
풀이법 구상
m이상 n이하를 범위로 하는 반복문을 돌면서 각 수가 소수인지 판별
코드 구현 (스위프트 사용)
import Foundation
func solution(_ m:Int, _ n:Int) -> Void {
var sum = 0
var min = -1
for p in m...n {
if isDecimal(p) {
sum += p
if (min == -1 || min > p) { min = p }
}
}
if (sum == 0) { print(-1) }
else {
print(sum)
print(min)
}
}
func isDecimal(_ n:Int) -> Bool {
if (n == 1) { return false }
for i in 2..<n { if (n%i == 0) { return false } }
return true
}
let m = Int(readLine()!)!
let n = Int(readLine()!)!
solution(m,n)
'Problem Solving' 카테고리의 다른 글
[프로그래머스] '평행' 문제풀이 (0) | 2024.01.26 |
---|---|
[백준] '등수 매기기' 문제 풀이 (1) | 2024.01.26 |
[프로그래머스/SQL] '상품 별 오프라인 매출 구하기' 문제 풀이 (1) | 2024.01.26 |
[백준] '수 정렬하기2' 문제 풀이 (1) | 2024.01.26 |
[프로그래머스] '없는 숫자 더하기' 문제풀이 (0) | 2024.01.23 |