728x90
    
    
  


무슨 문제길래 카카오 겨울 인턴십 문제가 푼 사람이 2만명이 다 돼가나 했더니...
이중배열의 개념만 잘 이해하고 있으면 생각보다 쉬운 문제였다!
1. board.size()를 하면 가장 겉의 배열의 요소 수를 세어주므로 세로줄 수, 즉 row_num으로 둔다.
2. moves[i]는 x(col_num)을 지정해 줬다. 이중배열은 array[row_num][col_num] 형식으로 요소를 꺼낸다.
3. bucket에 push/pop_back을 사용해 꺼낸 인형의 숫자를 넣거나 없앤다.
4. 인형을 없앨 때는 bucket의 size가 1 이상이어야 비교가 가능하므로 &&를 걸어준다.
#include <string>
#include <vector>
using namespace std;
//	vector<vector<int>> board = { {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} };
int solution(vector<vector<int>> board, vector<int> moves) {
	int answer = 0;
	int row_num = board.size();
	vector<int> bucket;
	for (int i = 0; i < moves.size(); i++) {
		int x = moves[i] - 1;
		for (int j = 0; j < row_num; j++) {
			if (board[j][x] != 0) {
				bucket.push_back(board[j][x]);
				board[j][x] = 0;
				if (bucket.size() > 1 && bucket[bucket.size() - 1] == bucket[bucket.size() - 2]) {
					bucket.pop_back();
					bucket.pop_back();
					answer += 2;
				}
				break;
			}
		}
	}
	return answer;
}

'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
| [C++] 프로그래머스 - 소수 만들기 (0) | 2021.07.13 | 
|---|---|
| [C++] 프로그래머스 - 신규 아이디 추천 (0) | 2021.07.13 | 
| [C++] 프로그래머스 - 2016년 (0) | 2021.07.02 | 
| [C++] 프로그래머스 - 모의고사 (0) | 2021.07.02 | 
| [C++] 프로그래머스 - 폰켓몬 (set) (0) | 2021.06.29 |