-
[프로그래머스/Level 1] 크레인 인형 뽑기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 24. 18:29
programmers.co.kr/learn/courses/30/lessons/64061
카카오 기출
1. moves 벡터의 요소들을 이차원 board 벡터의 열로 설정하고, 이를 기준으로 행을 탐색한다.
2. 0이 아닌 값을 만났을 때, 스택이 비어있다면 바로 push, 스택이 비어있지 않다면 스택의 top과 현재 board의 값을 비교하여 서로 같다면 pop을 해주고 사라지는 개수를 2개 더해준다.
3. 현재 board의 값을 0으로 설정해주고, break로 반복문을 종료한다.
4. 그 후, 다음 moves 벡터의 요소를 board 벡터의 열로 설정하고 moves의 요소를 모두 읽을때까지 반복한다.
#include <string> #include <vector> #include <stack> using namespace std; int solution(vector<vector<int>> board, vector<int> moves) { int answer = 0; stack<int> s; for(int i = 0; i < moves.size(); i++) { for(int j = 0; j < board.size(); j++) { if(board[j][moves[i] - 1]) { if(!s.empty() && s.top() == board[j][moves[i] - 1]) { s.pop(); answer += 2; } else s.push(board[j][moves[i] - 1]); board[j][moves[i] - 1] = 0; break; } } } return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 소수 찾기 (C++) (0) 2020.10.26 [프로그래머스/Level 1] 문자열 내 마음대로 정렬하기 (C++) (0) 2020.10.24 [프로그래머스/Level 2] 주식가격 (C++) (0) 2020.10.12 [프로그래머스/Level 3] 베스트앨범 (C++) (0) 2020.10.10 [프로그래머스/Level2] 위장 (C++) (0) 2020.10.10