[Code kata] 크레인 인형뽑기 게임

do yeon kim·2022년 10월 21일
0

회고?

어려웠다.
테스트케이스를 계속 하나씩 통과를 하지 못해서 어떻게 하면 문제를 해결할 수 있을지 생각하고 생각했다.

테스트케이스를 하나씩 틀리다보니 무언가 하나만 바꾸어 주면 가능할 거 같아서 계속 같은 코드만 보고 있다.

거의 다 풀이된 문제를 계속 보는 것 만큼 답답한 것도 없다.

잘못된게 없는데 왜 틀리는지 알수가 없다.....

문제는 해당 값을 지우는 것이 아닌 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

0개의 댓글