첫번째 시도
def solution(n):
answer = 0
prime_num=[]
for i in range(2,n+1):
for j in range(2,i+1):
if (i%j==0):
if (i!=j):
break
prime_num.append(i)
answer = len(prime_num)
return answer
효율이 좋지 않아서(시간초과되어서) 전체를 다 풀지 못하였다.
두번째 시도
def solution(n):
answer = 0
prime_num=[]
for i in range(2,n+1):
chk=True
for j in prime_num:
if (i%j==0): # if i isnt primenum
chk=False # chk changes false
break
if chk: # chk is true
prime_num.append(i) # add i to prime_num
answer = len(prime_num)
return answer
마찬가지로 정확도테스트 10,11,12 와 효율성 테스트 1,2,3,4를 풀지 못하였다. (시간초과)
세번째 시도
def solution(n):
answer = 0
prime_num=[]
chk=[False]*2+[True]*(n-1) # initialize chk, chk[0],chk[1] is not prime number
for i in range(2,n+1):
if chk[i]: # if chk[i] is
prime_num.append(i)
for j in range(2*i,n+1,i):
if chk[j]: # chk is True
chk[j]=False # chk changes false
answer = len(prime_num)
return answer
세번째 시도는 에라토스테네스의 체 라는 방법을 사용했다.
앞에서부터 하나씩 확인하는건 맞지만 뒤로 갈수록 비교하는게 적어져서 효율이 더 좋은 방법이다.
결과는 통과.
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL1 시저암호, python3 (0) | 2019.10.17 |
---|---|
[프로그래머스] LEVEL1 문자열을 정수로 바꾸기, 수박수박수?, python3 (0) | 2019.10.17 |
[프로그래머스] LEVEL1 서울에서 김서방 찾기, python3 (0) | 2019.10.17 |
[프로그래머스] LEVEL1 문자열 내림차순으로 배치하기, python3 (0) | 2019.10.16 |
[프로그래머스] LEVEL1 문자열 내 p와 y의 개수, python3 (0) | 2019.10.16 |