programmers Level1 (6)

Backend, DataEngineer·2021년 11월 30일
0
post-thumbnail

2019 KAKAO Blind - 실패율

나의코드

def solution(N, stages):
    li = {}
    answer= []
    stages_len = len(stages)

    for i in range(1,N+1):
    
        if stages.count(i) != 0:
            stages_len -= stages.count(i-1)
            li[i] = stages.count(i)/(stages_len)

        else:
            stages_len -= stages.count(i-1) ### 이부분을 입력하지 않아 1시간 헤맸다!
            li[i]=0
        
    answer = sorted(li, key=lambda x: li[x], reverse=True)
    return answer

느낀점:
위의 코드중 주석을 달아 놓은 부분을 놓쳐 1시간을 넘게 헤맸다. 아무리 해도 내가 맞는 것 같은데 질문 게시판에는 나와 같은 문제를 가지고 있는 사람이 없었다. '아무리 생각해도 나는 틀리지 않았다!!' 라는 생각으로 코드를 봐도 문제가 무엇인지 도무지 알 수 없었다. 그래서 다른 분의 정답과 베스트 답안을 보았는데 나의 코드와 굉장히 흡사하고 아무리 봐도 내가 왜 틀렸는지 납득이 가지 않았다. 그래서 추가적으로 디버깅을 하며 테스트를 계속 진행했는데 나의 코드가 출력한 값과 다른 분이 쓴 코드가 출력한 값이 다른 부분을 발견했다.
문제점은 주석을 한 부분이 빠져 있어 stages_len에서 - 연산이 이루어지지 않았다. 왜 연산이 이루어지지 않았냐면 count한 값이 0이면 else 문을 실행하게 되는데, 이때 else문에서 주석한 부분이 빠져 있어 -연산이 일어나지 않게되었다. 왜 else 문에 저 문장을 입력하지 않았을까 생각해보니 stages_len이라는 변수의 중요성을 생각하지 않고 count가 0이니까 return 값은 0! 하고 간단히 지나갔던 것 같다. 디버깅을 열심히 하지 않았더라면 '이 코드가 왜 틀렸는지 모르겠다!! 나중에 코드고수가 되어 다시 수정할것이다!' 라고 포스팅을 올리려고 했다. 하지만 디버깅을 통해 문제를 해결해 뿌듯했고, 디버깅의 중요성을 더욱 알게되었다.

profile
오늘 더 좋은 사람, 더 좋은 하루

0개의 댓글

관련 채용 정보