GitHubSeob
C++ / 프로그래머스 / 크레인 인형뽑기 게임 본문
문제
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
문제풀이
문제가 길어서 그런지 어려워보이지만 간단하다.
인형을 뽑아서 담는 벡터 basket을 선언한다.
[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 2 3 4 5
예제의 인형뽑기 기계이다.
0이면 비어있고 숫자가 같으면 같은인형, 다르면 다른 인형이 담겨있다.
1번에서 뽑을경우 맨 위부터 0이 아닌 인형이 있는 곳을 탐색한다.
발견하면 basket을 push하여 바구니에 4를 담는다.
만약 바구니에 인형을 담았을때, 같은 인형이 붙어 있을경우 basket에서 2개의 원소를 pop하고 answer에 +2를 한다.
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
vector<int> basket(0, 0);
int answer = 0;
int i = 0;
int j = 0;
for (i = 0; i < moves.size(); ++i) {
int col = moves[i] - 1;
for (j = 0; j < board.size(); ++j) {
if (board[j][col] != 0) {
basket.push_back(board[j][col]);
board[j][col] = 0;
if (basket.size() >= 2) {
if (basket[basket.size() - 1] == basket[basket.size() - 2]) {
answer += 2;
basket.pop_back();
basket.pop_back();
}
}
break;
}
}
}
return answer;
}
'Programmers > Level 1' 카테고리의 다른 글
C++ / 프로그래머스 / 위클리 챌린지 2주차 / 상호 평가 (0) | 2021.08.11 |
---|---|
C++ / 프로그래머스 / 키패드 누르기 (2) | 2021.08.08 |
C++ / 프로그래머스 / 음양 더하기 (0) | 2021.08.08 |
C++ / 프로그래머스 / 모의고사 (0) | 2021.08.08 |
C++ / 프로그래머스 / 체육복 (0) | 2021.08.04 |