알고리즘

[프로그래머스 Lv1 - 2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 (Python)

lwkejpf 2022. 6. 30. 20:16

 


 

def solution(board, moves):
    
    answer = 0
    box = []
    li = [[0]*len(board[0]) for _ in range(len(board))]
    
    # 열별로 나열
    for i in range(len(board[0])) :
        for k in range(len(board)) :
            li[i][k] = board[k][i]

    for move in moves :
        while (li[move-1][0] == 0) :
            li[move-1].pop(0)
            
        if len(box) >= 1 and box[-1] == li[move-1][0] :
            del box[-1]
            del li[move-1][0] 
            answer += 2
            
        else :
            box.append(li[move-1][0])
            del li[move-1][0]
            
    return answer

 

IndexError: list index out of range

 

별 것도 아닌 오류 잡는다고 한 시간은 쓴 것 같음 ㅋㅋ..하

 

출력할 땐 잘 나오면서

삭제하려니까 도대체 인덱스 오류가 왜나는지 모르겠는거임 .....ㅜㅜㅜ

 

그래서 그냥 레플릿에서 코드 실행해서 어디가 문젠지 찾았다 

ide 안 쓰는 연습하고 있는데 이건 ... 도저히 .... 해결 못 할 것 같아서 그냥 돌려버림 ㅎ

 


 

def solution(board, moves):
    
    answer = 0
    box = []
    li = [[0]*len(board[0]) for _ in range(len(board))]
    
    # 열별로 나열
    for i in range(len(board[0])) :
        for k in range(len(board)) :
            li[i][k] = board[k][i]
            
    for move in moves :
        if len(li[move-1]) == 0 : 
            continue
        while (li[move-1][0] == 0) :
            li[move-1].pop(0)

        if len(box) >= 1 and box[-1] == li[move-1][0] :
            del box[-1]
            del li[move-1][0]
            answer += 2
            
        else :
            box.append(li[move-1][0])
            del li[move-1][0]
    return answer

 

알고 보니까 이미 li[move-1] 에 요소 다 삭제해서 없는 상태인데

while  조건문에서 인덱스 지정해버리니까 오류거였음 ..

 

그래서 li[move-1] 요소 개수 검사해주는 코드 한 줄 넣으니까 해결됐다 휴

 

 

사실 이 문제 재작년인가 알고리즘의 ㅇ 자도 모를 때 지나가다 본 문제같은데

그땐 이거 보고 이게 도대체 뭐야..? 이런 걸 어떻게 코드로..? 

 

했었는데 지금 그래도 혼자 힘으로 풀었다는 게 신기할 뿐 ,, 암튼 해결 ^-^