티스토리 뷰

728x90

https://programmers.co.kr/learn/courses/30/lessons/64061

 

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

[[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

 

  • 해설 :

5x5의 2차원 배열로 이루어진 인형뽑기 게임에서 같은 인형을 2번 연속 뽑을경우 2점을 얻는 게임이다. 크레인에서 인형을 뽑는 순서가 주어질 때 얻을 수 있는 점수를 출력하면 된다.

 

 

 

  • 풀이:

stack을 사용하면 쉽게 해결할 수 있는 문제이다. 크레인이 인형을 뽑는 상황을 y좌표는 고정하며 x의 좌표가 5이상 또는 인형을 만날때까지 1씩 증가시켜주었고 만약 인형을 만났다면 이를 stack에 넣는다. stack에 넣을 때 stack의 top과 현재 넣을 인형을 비교하여 같다면 stack.pop()을 실행하고 점수를 2점 카운팅한다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def solution(board, moves):
    maps = [[] for _ in range(len(board))]
    stack = []
    answer = 0
    for i in moves:
        for j in range(len(board)):
            if board[j][i-1!= 0:
                if stack:
                    if stack[-1== board[j][i-1]:
                        stack.pop()
                        answer+=2
                    else:
                        stack.append(board[j][i-1])
                else:
                    stack.append(board[j][i-1])
                board[j][i-1= 0
                break
    return answer
cs
320x100
댓글
© 2022 WonSeok, All rights reserved