강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김이지님의 프로필 이미지
김이지

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

7. 소수의 개수(에라토스테네스 체)

이렇게 하면 왜 오류가 나는 건지 알 수 있을까요?!

작성

·

188

0

n = int(input())
a = [0]*(n+1)
cnt = 0
for i in range(2, n+1):
if a[i] == 0:
cnt += 1
for j in range(i+1, n+1):
if j % i == 0:
a[j] = 1
print(cnt)

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

코드가 비효율적이라 타임리밋이 나는 코드입니다.

j for문이 1씩 증가하면서 j값 중에서 i의 배수를 찾는 것은 엄청 비효율적이라 타임리밋이 나는 것입니다. 

for문은 for(start, stop, step) 으로 3개의 인자를 가질 수 있습니다. j for문을 step값을 사용하는 for문으로 생각해보세요. 

김이지님의 프로필 이미지
김이지

작성한 질문수

질문하기