한참을 이상~한 방법으로 고민하다가 ..

배열에 그냥 다 박아넣고 특정 인덱스의 세로축만 읽으면 된다는 걸 알고 풀었더니 매우 허무하게 잘 풀렸던 문제...

아래는 정답코드이다.

 

아래 지도를 보면서 푸세요!


    00000
    00103
    02501
    42442
    35131

#include <bits/stdc++.h>
using namespace std;

int grid[31][31];

int solution(vector<vector<int>> board, vector<int> moves) {
    
    int answer = 0;
    stack<int> S;
    
    for (int i = 0; i < moves.size(); i++) // 총 반복 횟수.
    {
        int index = moves[i] - 1;
        int j = 0;
        while (j < board.size() && board[j][index] == 0 )
            j++;
        if (board.size() == j)
            continue;
        int stackElement = board[j][index];
        board[j][index] = 0;
        
        S.push(stackElement);
        int tempElement = S.top();
        S.pop();
        if (!S.empty() && S.top() == tempElement)
        {
            answer += 2;
            S.pop();
        }
        else
            S.push(tempElement);
        
        
    }

    
    return answer;
}
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom