개발자 성장 기록/코테

[이것이 코딩테스트다] 큰 수의 법칙 Python 풀이과정

으노방 2022. 9. 21. 21:55
테스트케이스
# test1
n, m, k = 5, 8, 3
n_list = [2, 4, 5, 4, 6]

# test2
n, m, k = 5, 7, 2
n_list = [3, 4, 3, 4, 3]
초기 코드

* test1은 잘 돌아가는데 tes2에서 자꾸 반복문이 9번 돌아갔다.

n, m, k = map(int,input().split())
n_list = list(map(int,input().split()))

n_list.sort(reverse=True)
answer = 0
sub_k = k
while m>0:
    while k>0:
        m-=1
        answer+=n_list[0]
        k-=1
    if k == 0 :
        m-=1
        answer+=n_list[1]        
        k = sub_k

왜.... -2까지 도는가....분명히 첫 번재 while문에서 m>0이라고 걸어줬는데

맨 처음에 if==0: break 문도 아래 if문에 걸고 앉아 있었다.

 

해결 코드
n, m, k = map(int,input().split())
n_list = list(map(int,input().split()))

n_list.sort(reverse=True)
answer = 0
sub_k = k
while m>0:
    while k>0:
        m-=1
        answer+=n_list[0]
        k-=1
        if m == 0:
            break
    if k == 0 :
        m-=1
        answer+=n_list[1]        
        k = sub_k

*이렇게 두 번째 while문에 if==0: break 추가를 해야 뭐가 됐든 m이 0이 되면 이중 while문 거치지 않고 빠져 나온다