백준 알고리즘 No.1978 소수 찾기
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
체감 난이도: ★
초반에 문제를 잘못 이해해서 소수인지 확인하는 알고리즘을 짜서 틀리긴 했지만 금방 풀 수 있었다..
Code
count = int(input())
values = map(int, input().split())
prime_count = 0
# 소수인지 판별하는 함수
def is_prime(num):
if num == 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
# 소수의 개수 체크
for num in values:
if is_prime(num):
prime_count += 1
print(prime_count)
Solution
is_prime
함수를 만들어서 소수인지 판별하여 True, False값을 반환하도록 하였다.
또한 함수 내에 1은 따로 False값을 지정하였다.
✔map(int, input().split())
백준 알고리즘 풀이를 하면서 가장 유용하게 쓴 함수이다.
input()
: 사용자로부터 입력 받음input().split()
: 사용자의 입력을 공백을 기준으로 나눠 리스트로 변환map()
:map(function, iterable, ...)
형태로 사용하며 모든 iterable의 각 요소에 대해 함수를 적용map(int, input().split())
: 리스트의 각 요소를 정수로 변환
✘ int()
함수는 문자열을 정수로 변환할 수 있지만, 리스트 전체에는 적용되지 않는다.
즉, int(input().split())
는 작동하지 않는 함수이다.
혹시 더 좋은 알고리즘 풀이가 있다면 언제든 댓글로 알려주세요 😃