실버 Lv 4 https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
[Python]
풀이 방법:
바로 전 게시글 2581번도 소수 관련 문제이다.
2581번과의 차이점은 해당 문제는 숫자의 범위가 주어지며 소수들의 합과 최소값을 출력하는 문제이다.
리스트로 소수를 담아 합과 최소값을 구하기 편리하다.
반면, 1978번 문제는 단지 소수가 몇 개인지 찾아야하는 문제이므로 소수를 카운팅하여 출력해주기만 하면 된다.
정답:
n = int(input())
numbers = map(int, input().split())
real_numbers = 0 # 소수
for num in numbers:
err = 0
if num > 1:
for i in range(2, num):
if num % i == 0: # 소수가 아니면
err += 1
if err == 0:
real_numbers += 1 # 소수 담기, 소수개수 세는거니까
print(real_numbers)
[Javascript]
다양한 풀이들을 참고해 보았다.
코드 1
const input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n');
console.log(input[1].split(' ').filter(x =>
{
if(x == 1){
return false;
}
for( let i = 2; i < x; i++){
if(x % i === 0){
return false;
}
}
return true;
}).length)
코드 2
const [n, arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
newArr = arr.split(' ').map(el => parseInt(el))
const primes = []
newArr.map((num, idx) => {
let isPrime = true
for(let i = 2; i <= num/2; i++) {
if(num % i === 0) {
isPrime = false
break
}
}
if(isPrime && num !== 1) {
primes.push(num)
}
})
console.log(primes.length)
'코딩테스트 > Lv1' 카테고리의 다른 글
[Python] 백준 온라인 저지 1789번 (0) | 2022.04.26 |
---|---|
[Python, Javascript] 백준 온라인 저지 1292번 (0) | 2022.04.25 |
[Python, Javascript] 백준 온라인 저지 2581번 (0) | 2022.04.25 |
[Python, Javascript] 백준 온라인 저지 2693번 (0) | 2022.04.25 |
[Python, Javascript] 백준 온라인 저지 2609번 (0) | 2022.04.24 |