한참을 이상~한 방법으로 고민하다가 ..
배열에 그냥 다 박아넣고 특정 인덱스의 세로축만 읽으면 된다는 걸 알고 풀었더니 매우 허무하게 잘 풀렸던 문제...
아래는 정답코드이다.
아래 지도를 보면서 푸세요!
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;
}
'Algorithm' 카테고리의 다른 글
프로그래머스 단체사진 찍기 c++ (0) | 2021.05.29 |
---|---|
[C++] 카카오프렌즈 컬러링북 - 프로그래머스 (0) | 2021.05.28 |
프로그래머스[c++] 로또의 최고 순위와 최저 순위 (0) | 2021.05.25 |
프로그래머스 - 카펫 c++ (0) | 2021.05.23 |
프로그래머스 기능개발 c++ (0) | 2021.05.23 |
최근댓글