내 코드
def solution(n):
a = set([i for i in range(2,n+1)])
for i in range(2,n):
a-=set([k*i for k in range(2,n//i+1)])
return len(a)
에라토스테네스의 체~ 이걸로 안푸니까 시간초과나더라ㅠ
다른사람 코드
def solution(n):
num=set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num-=set(range(2*i,n+1,i))
return len(num)
이사람도 에라토스테네스의 체로 풀었는데 나보다 더 효율적이게 풀었다!
일단 처음에 set을 만들때 range이렇게만 해도 만들어진다.
for문에서 범위를 n+1까지 돌려야한다. 나는 n까지 돌렸는데 왜돌아갔지?..음..
그리고 if문을 이용해서 num에 있는지 확인하는게 더 효율적이다!! 까먹지말자!!!
num에서 뺄때도 range만 사용해서 풀었다.
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] [1차]비밀지도 (0) | 2021.09.06 |
---|---|
[프로그래머스] 위클리 챌린지 4주차 직업군 추천하기 (0) | 2021.09.06 |
[프로그래머스] 3진법 뒤집기 (0) | 2021.09.05 |
[프로그래머스] 내적 (0) | 2021.09.05 |
[프로그래머스] 음양 더하기 (0) | 2021.09.05 |