편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.10.17

    파이썬 코테문제 질문


    def solution(n):
        answer = []
    
    
        # 일단 약수를 전부 뽑기, 이후 약수중에서 소수인 것만 남기기.
        for i in range(2,n+1):
            if n%i == 0:
                answer.append(i)
    
    
        for i in answer:
            cnt = 0
            for j in range(1,i+1):
                if i % j == 0:
                    cnt += 1
                if cnt >= 3 :
                    answer.remove(i)
                    break
    
    
        return answer
    

    위 포문에서 answer 을 약수리스트로 만들고 밑 포문에서 약수를 하나씩 검사해 합성수인 걸 제거하고 싶은데, 결과가

    테스트 1
    입력값 〉   12
    기댓값 〉   [2, 3]
    실행 결과 〉   실행한 결괏값 [2,3,6]이 기댓값 [2,3]과 다릅니다.
    
    테스트 2
    입력값 〉   17
    기댓값 〉   [17]
    실행 결과 〉   테스트를 통과하였습니다.
    
    테스트 3
    입력값 〉   420
    기댓값 〉   [2, 3, 5, 7]
    실행 결과 〉   실행한 결괏값 [2,3,5,7,12,15,21,30,42,70,105,210]이 기댓값 [2,3,5,7]과 다릅니다.
    

    이런식으로 나옵니다.

    왜 제거 되는 것도 있고 안되는 것도 있는지, 도저히 이유를 모르겠습니다. 예를 들어 테1 에서 6으로 아래 포문을 돌려보면 cnt 가 3을 초과해 remove 돼야하는데, 되지가 않습니다.

  • 프로필 Monsangter님의 편집
    날짜2022.10.16

    파이썬 코테문제 질문


    def solution(n): answer = []

    # 일단 약수를 전부 뽑기, 이후 약수중에서 소수인 것만 남기기.
    for i in range(2,n+1):
        if n%i == 0:
            answer.append(i)
    
    
    for i in answer:
        cnt = 0
        for j in range(1,i+1):
            if i % j == 0:
                cnt += 1
            if cnt >= 3 :
                answer.remove(i)
                break
    
    
    return answer
    

    위 포문에서 answer 을 약수리스트로 만들고 밑 포문에서 약수를 하나씩 검사해 합성수인 걸 제거하고 싶은데, 결과가

    테스트 1 입력값 〉 12 기댓값 〉 [2, 3] 실행 결과 〉 실행한 결괏값 [2,3,6]이 기댓값 [2,3]과 다릅니다.

    테스트 2 입력값 〉 17 기댓값 〉 [17] 실행 결과 〉 테스트를 통과하였습니다.

    테스트 3 입력값 〉 420 기댓값 〉 [2, 3, 5, 7] 실행 결과 〉 실행한 결괏값 [2,3,5,7,12,15,21,30,42,70,105,210]이 기댓값 [2,3,5,7]과 다릅니다.

    이런식으로 나옵니다. 왜 제거 되는거 있고 안되는 거 있는지, 도저히 이유를 모르겠습니다. 예를 들어 테1 에서 6으로 아래 포문을 돌려보면 cnt 가 3을 초과해 remove 돼야하는데, 되지가 않습니다.