-
[프로그래머스][2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임Algorithm/Programmers 2020. 7. 25. 16:33
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
풀이과정
1. 인형을 뽑아 같은 것이 쌓이게 되면 터트리는 문제이다.
2. 처음 들어온 인형뽑기의 2차원 벡터를 아래의 그림처럼 로테이트 시켜 저장하였다.
0으로 들어온 값은 저장하지 않았다.
vector<queue<int>> 타입으로 저장하였는데, pop을 하면 가장 뒤에 것이 나오도록 저장했기 때문이다.
3. moves의 횟수만큼 저장소에 옮겨 담고 이전 값과 같으면 터트리고, 다르다면 저장소에 저장을 했다.
또 한 해당 move 커맨드에 해당하는 벡터의 사이즈가 0이라면 다음 턴으로 넘어간다.
소스코드
더보기#include <string> #include <vector> #include <queue> using namespace std; int solution(vector<vector<int>> board, vector<int> moves) { int answer = 0; vector<int> st; vector<queue<int>> newBoard; for (int i = 0; i < board.size(); i++) { queue<int> v; newBoard.push_back(v); for (int j = 0; j < board[0].size(); j++) { if (board[j][i] != 0) newBoard[i].push(board[j][i]); } } for (int i = 0; i < moves.size(); i++) { int idx = moves[i] - 1; if (newBoard[idx].size() != 0) { int cur = newBoard[idx].front(); newBoard[idx].pop(); if (st.size() > 0 && st[st.size() - 1] == cur) { answer += 2; st.pop_back(); } else { st.push_back(cur); } } } return answer; }
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 스킬트리 (0) 2020.08.19 [프로그래머스] 정수 삼각형 (0) 2020.07.29 [프로그래머스][카카오2018][1차] 비밀지도 (0) 2020.03.12 [프로그래머스][카카오2018][1차] 다트 게임 (0) 2020.03.11 [프로그래머스][카카오2018][3차] 파일명 정렬 (1) 2020.03.10