강의로 돌아가기
장동훈

파이썬 뭐가 문제일까요 ㅜㅜ

def solution(n):
    s=list(range(2,n+1))
    for i in range(2,n+1):
        for i2 in range(2,i//2+1):
            if i%i2==0 :
                del s[2]
    return len(s)

간략한 설명을 하자면 n을 받으면 2부터 n까지인 배열 s를 생성합니다. 그 다음 2부터 n 까지 돌아가면서 비교를합니다.
비교할때는 다시 2부터 i의 절반까지만 돌아가면서 i를 나누어주고 나누어 떨어지면 배열 s에서 삭제합니다.
그럼 최종적으로 남는 배열 s가 소수이고, 그 배열s의 길이를 반환합니다.

뭐가 문제일까요...? 하나는 맞고 하나는 list assignment index out of range 이렇게 나오네요 ㅜㅜ
마지막 len(s)를 s로 바꾸어 봐도 n이 5일때 2,3,5 잘 나오는데 답답하네요 ㅜ

  • Petrus Kim
    에라토스테네스 알고리즘을 이용해야합니다. 이건 뭐 수학을 모르면 풀지 못하는 문제네요. Petrus Kim 2019.03.15 19:04
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.