[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)
사용
💛 개인 공부 기록용 블로그입니다. 👻