개발/알고리즘
[백준] 기본 수학 2 - 1978번 소수 찾기
Liber21
2021. 3. 31. 14:19
반응형
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
입력
주어진 수 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)
반응형