반응형
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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
풀이 )
- 바구니(basket)가 비어있는 경우 선택된 인형(picked)을 그대로 넣고
- 바구니가 비어있지 않은 경우 basket에서 가장 위에 있는 인형(basket.back())과 인형을 비교해서
- 같은 경우 선택된 인형과 가장 위의 인형을 제거 하기 위해서 basket.pop_back()을 하고 답에 2를 더하고
- 다른 경우 선택된 인형을 바구니에 넣는다. basket.push_back(picked)
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
int len_moves = moves.size();
int len_board = board.size();
int picked;
vector<int> basket;
for(int i = 0; i < len_moves; ++i){
int crain = moves[i]-1;
for(int j = 0; j < len_board; ++j){
if(picked = board[j][crain]){
board[j][crain] = 0;
if(basket.empty()){
basket.push_back(picked);
break;
}
if(basket.back() == picked){
basket.pop_back();
answer += 2;
}
else
basket.push_back(picked);
break;
}
}
}
return answer;
}
주의점 )
- 인형을 뽑은 이후 board에서의 값을 0으로 변경
- 인형을 고른 후 작업을 마친 다음 break
반응형
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[C++] 프로그래머스(Level 1) - 키패드 누르기 (0) | 2020.12.09 |
---|---|
[C++] 프로그래머스(Level 1) - [1차] 비밀지도 (0) | 2020.12.09 |
[C++] 프로그래머스(Level 1) - 모의고사 (0) | 2020.11.03 |
[C++] 프로그래머스(Level 1) - [1차] 다트 게임 (0) | 2020.10.31 |
[C++] 프로그래머스(Level 1) - 실패율 (0) | 2020.10.29 |