알고리즘

프로그래머스 크레인 인형뽑기 [파이썬]

Brad Daeho Lee 2021. 4. 18. 22:03

 

문제

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

문제풀이

def solution(board, moves):
    
    lst = []
    # moves가 다 끝나고 나서 lst 안에서 터트려진 인형의 개수
    answer = 0 
    for i in moves:
    	# board안에 있는 맨 마지막 리스트에 i번째 숫자가 0이면 가져올꺼가 없기 때문에 제외한다. 
        if board[-1][i-1] != 0: 
            k = 0
            # board 첫번 째 리스트부터 시작해서 0값을 가지고 있지 않은 k번째 리스트를 찾는다.
            while board[k][i-1] == 0: 
                k = k + 1
          	# 0이 아닌 다른값을 찾은후에 lst에 넣는다. 
            lst.append(board[k][i-1])
            # lst안에 넣은값은 board에서 빼준다.
            board[k][i-1] = 0 
            # lst[-1]과 lst[-2]를 비교하기 위해서는 lst의 길이가 1보다 커야한다.
            if len(lst) > 1: 
            	# 제일 바깥쪽 두 숫자가 같아야 터지는 거기 때문에 index는 -1, -2로 정했다.
                if lst[-1] == lst[-2]: 
                	# 같으면 pop()을 두번해서 index값 -1,-2를 lst에서 빼낸다.
                    lst.pop() 
                    lst.pop()
                    # answer에 2를 더한다. 2개 숫자가 터졌기 때문에.
                    answer = answer + 2 
    
    
    return answer