반응형
입력
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
출력
N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.
풀이
소수 찾기 방법을 크게 두 가지로 생각했다
하나는 미리 1000 이하의 모든 소수를 구해 저장해놓는 것과 (DP)
하나는 주어지는 값 이하의 모든 소수를 구하는 방법이다
이 문제의 경우 반복해서 수를 묻지 않음으로 후자의 방법을 사용했다
소수를 찾는 프로그램을 먼저 짠다.
소수를 찾는 방법은 자기 자신이 아닌 수로 나누었을 때 나머지가 0 이 아닌 값이다. (1, 2 제외)
Swift 전체 코드
func prime(num : Int) -> Bool {
var j = 1
if num < 2 {
return false
}
for i in stride(from: 2, to: num, by: j * j) {
j = i
if num % i == 0 {
return false
}
}
return true
}
let input = Int(readLine()!)!
var value = readLine()!.split(separator: " ")
var total = 0
for _ in 0..<input {
let v = Int("\(value.first!)")!
if prime(num: v) == true {
total += 1
}
value.removeFirst()
}
print(total)
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 정렬 - K번째 수 (0) | 2021.03.31 |
---|---|
[프로그래머스] 정렬 - 가장 큰 수 (0) | 2021.03.31 |
[백준] 기본 수학 - 2839번 설탕 배달 (0) | 2021.03.30 |
[백준] 기본 수학 - 2775번 부녀회장이 될테야 (0) | 2021.03.30 |
[백준] 기본 수학 - 2869번 달팽이는 올라가고 싶다 (0) | 2021.03.30 |