본문 바로가기
알고리즘

[알고리즘] 크레인 인형뽑기 게임

by keel_im 2021. 3. 16.
반응형

포인트

  • 문제에서는 친절히 스택을 써주라고 그림에서 보여준다. (하지만 나는 바로 알지 못했다.)
  • MOVES 는 열의 숫자로 본인은 0을 쓰는 것을 좋아하기 때문에 잘 사용하기 위해 수정을 하였다.

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

c++/cpp

#include <bits/stdc++.h>

using namespace std;

int solution(vector<vector<int>> board, vector<int> moves)
{
    int answer = 0;
    for (int i = 0; i < moves.size(); i++)
    {
        moves[i] -= 1;
    }
    stack<int> stack;

    for (auto command : moves)
    {
        for (int i = 0; i < board.size(); i++)
        {
            if (board[i][command] != 0)
            {
                stack.push(board[i][command]);
                board[i][command] = 0;
                break;
            }
        }

        if (stack.size() >= 2)
        {
            auto a = stack.top();
            stack.pop();
            auto b = stack.top();
            stack.pop();

            if (a == b)
            {
                answer += 2;
            }
            else
            {
                stack.push(a);
                stack.push(b);
            }
        }
    }

    return answer;
}

python

def solution(board: list, moves: list) -> int:
    moves = list(map(lambda x: x - 1, moves))
    # 순서를 맞추기 위해 전부 하나씩 빼준다 
    stack = []
    answer = 0
    
    for command in moves:
        # 움직임을 보면서
        for row in range(len(board)):
            if board[row][command] != 0:
                # 0이 아닌 것을 만나면
                stack.append(board[row][command])
                # 일단 스택에 넣고
                board[row][command] = 0
                # 0으로 바꾼다
                break

        if len(stack) >= 2 and stack[-1] == stack[-2]:
            # 2이상 이고 같다면 2개를 빼고 넣는다.
            stack.pop(-1)
            stack.pop(-1)
            answer += 2

    return answer


print(solution([[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

 

반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 미세먼지 안녕!  (0) 2021.03.18
[알고리즘] 비밀 지도  (0) 2021.03.16
[알고리즘] 신규 아이디 추천  (0) 2021.03.16
[알고리즘] 네트워크  (0) 2021.03.15
[알고리즘] 인구 이동  (0) 2021.03.14

댓글