[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)
이렇게 했었다..
두 번째니까 다음엔 꼭 기억하도록..
Leave a comment