[BOJ] 1978 - 소수 찾기 (🥈 실버 4티어)
사용 언어: Python3
문제
풀이
내 풀이
N = int(input())
numbers = list(map(int, input().split()))
cnt = 0
for num in numbers:
    if num == 1:
        continue
    if not any(num % x == 0 for x in range(2, num)):
        cnt += 1
print(cnt)
- 테스트 케이스: 통과
- 제출 결과
 
다른 풀이
N = int(input())
numbers = list(map(int, input().split()))
cnt = 0
for num in numbers:
    if num <= 1:
        continue
    for i in range(2, int(num ** 1/2) + 1): # ✅ 범위 줄이기
      if num % i == 0: # 소수가 아니면 break
        break
    else: # for ~ else
      cnt += 1
print(cnt)
- for문에서 범위를 줄일 수 있다면 줄이는게 좋다.
- 내가 사용한 any()방식은 중간에 break 할 수 없는 반면 for문은 break가 가능하기 때문에,
 코드가 길어지더라도 for문을 이용하는게 나아보인다.
- 루트 계산에 아래처럼 sqrt()를 이용할 수도 있다.- from math import sqrt: math 라이브러리 임포트
- for i in range(2, int(sqrt(num)) + 1):- (num ** 1/2)대신- sqrt(num)사용
 
💛 개인 공부 기록용 블로그입니다. 👻
