어려웠다.
테스트케이스를 계속 하나씩 통과를 하지 못해서 어떻게 하면 문제를 해결할 수 있을지 생각하고 생각했다.
테스트케이스를 하나씩 틀리다보니 무언가 하나만 바꾸어 주면 가능할 거 같아서 계속 같은 코드만 보고 있다.
거의 다 풀이된 문제를 계속 보는 것 만큼 답답한 것도 없다.
잘못된게 없는데 왜 틀리는지 알수가 없다.....
문제는 해당 값을 지우는 것이 아닌 0으로 변경해주는 것으로 해결 할 수 있었다. 그게 그거 아닌가 라는 생각이 든다.
하지만, 분명 다른 의미가 있어서 이렇게 테스트 케이스를 작성해둔 것이다 라고 생각하고 있다.
"""
크레인 인형뽑기 게임
[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]]
"""
def solution(board, moves):
answer = 0
stack = []
cnt = 0
result = []
for i in range(len(board)):
temp = []
for i,j in enumerate(board):
temp.append(board[i][cnt])
result.append(temp)
cnt += 1
for i in moves:
for j in result[i-1]:
if j != 0:
if stack and stack[-1] == j:
answer += 2
stack.pop(-1)
break
stack.append(j)
break
result[i-1][result[i-1].index(j)] = 0
return answer
#[[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]]
#[[0, 0, 0, 4, 3], [0, 0, 2, 2, 5], [0, 1, 5, 4, 1], [0, 0, 0, 4, 3], [0, 3, 1, 2, 1]]
위에 처럼 들어온 board를 아래처럼 변경후 풀이를 진행했다.
다른 사람들의 풀이를 보니 주어진 board 그대로 사용해서 풀이를 진행했다.
다른 풀이를 보니, 괜히 변경한거 같다는 생각이 든다.
def solution(board, moves):
stacklist = []
answer = 0
for move in moves:
for i in range(len(board)):
# board의 각 요소의 move-1에 해당하는 값이 무었인지 확인한다.
# 0이 아니라면 해당 요소가 stacklist에 추가되는 것이다.
# 그리고 해당 요소를 0으로 바꾸어 준다.
if board[i][move-1] != 0:
stacklist.append(board[i][move-1])
board[i][move-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer