[Programmers] 크레인 인형뽑기 게임

Updated:

크레인 인형뽑기 게임

크레인 인형뽑기 게임 을 클릭하면 바로 이동한다.

주저리 주저리 문제가 길지만 요약하자면 2차원 배열에서 열 단위로 순회해 값이 0 이 아닌 경우 스택에 넣고

스택에 넣었을 때, 자신의 밑에 있는 원소가 같은 값이면 두 값을 모두 지우고 지운 원소 개수를 반환하는 그런 알고리즘이다.

def solution(board, moves):
    answer = 0
    basket = [0]

    for i in moves:
    	for j in range(len(board[0])):
    		if board[j][i-1] != 0:
    			basket.append(board[j][i-1])
    			board[j][i-1] = 0

    			if basket[-1] == basket[-2]:
    				basket.pop()
    				basket.pop()
    				answer += 2
    			break
    			
    return answer

board = [[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]]
moves = [1,5,3,5,1,2,1,4]

print(solution(board,moves))

여기서 두 가지 수정 한 부분이 있다.

첫번째는 basket 을 처음에는 비워 둔 채로 코드를 돌렸다.

그리고 10번 줄에 basket 길이가 2 이상인 경우에 검사를 하도록 했다.

그렇게 되면 얼마 차이는 안나지만 매번 basket 길이를 계산해야 한다. 하지만 basket 에 0 을 넣어두고 시작한다면

basket 길이는 따져보지 않아도 검사가 가능하다. 이런 사소한 아이디어도 잘 생각하는 능력을 길러야겠다.

두번째로는 이건 반성해야한다.. [Programmers] 영어 끝말잇기 이 글을 보면 알겠지만 스트링의 마지막 Index 를 찾아가고 싶으면

[-1] 으로 찾아가면 된다고 써 놨다 !!!!! 하지만 !!!!!!! 또 !!!!!!!!!

기억을 못하고 11번 코드에서 if basket(len(basket)-1) == basket(len(basket)-2) 이렇게 했었다..

두 번째니까 다음엔 꼭 기억하도록..


Categories:

Updated:

Leave a comment