728x90
반응형
문제 링크: Click
01.설계
- 조금은 비효율적일 수 있지만
- 배열의 1번 열의 모든것을 0 빼고 다른 백터에 저장
- 여기서는 lineDoll[1]에 저장되는것
- 위와 같은 형식으로 모든 배열의 숫자를 넣는다.
-
for (int j = 0; j < board.size(); j++) {//뽑아내기 for (int i = 0; i < board.size(); i++) { if (board[i][j] != 0) { lineDoll[j].push_back(board[i][j]); } } }
- 여기서는 lineDoll[1]에 저장되는것
- 그리고 box라는 곳에 moves에 맞게 넣어야하는데 여기서 중요한것은
- moves의 인덱스는 1부터 시작 우리가 넣는 백터는 0부터 시작이므로 소스를 보면
- moves[m]-1을 해야지 제대로 결과가 나옴
-
if (lineDoll[moves[m]-1].size() != 0) { box.push_back(lineDoll[moves[m]-1][0]); lineDoll[moves[m]-1].erase(lineDoll[moves[m]-1].begin()); }
- moves의 인덱스는 1부터 시작 우리가 넣는 백터는 0부터 시작이므로 소스를 보면
- 2개이상일때 부터 비교하게 했음
- 그리고 2개이상의 숫자가 같으면 box백터의 두개의 값을 지우고 +2 씩 answer에 더하는 식으로 구현
-
if (box.size() >= 2) { for (int i = 0; i < box.size() - 1; i++) { if (box.size()==0||box.size() == 1)break; if (box[i] == box[i + 1]) { box.erase(box.begin() + i, box.begin() + i+2); i--; answer += 2; } } }
- 배열의 1번 열의 모든것을 0 빼고 다른 백터에 저장
02.소스코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
vector<int>box;
vector<int>lineDoll[31];
for (int j = 0; j < board.size(); j++) {//뽑아내기
for (int i = 0; i < board.size(); i++) {
if (board[i][j] != 0) {
lineDoll[j].push_back(board[i][j]);
}
}
}
for (int m = 0; m < moves.size(); m++) {
if (lineDoll[moves[m]-1].size() != 0) {
box.push_back(lineDoll[moves[m]-1][0]);
lineDoll[moves[m]-1].erase(lineDoll[moves[m]-1].begin());
}
//인형 두개 이상인지 확인하고 같은 종류 두개인지 확인후 제거 점수 추가
if (box.size() >= 2) {
for (int i = 0; i < box.size() - 1; i++) {
if (box.size()==0||box.size() == 1)break;
if (box[i] == box[i + 1]) {
box.erase(box.begin() + i, box.begin() + i+2);
i--;
answer += 2;
}
}
}
}
return answer;
}
int main(void)
{
cout << solution({ {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});
return 0;
}
728x90
반응형
'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글
2022-06-23-2017카카오코드예선-카카오프렌즈-컬러링북 (0) | 2022.06.23 |
---|---|
2022-06-22-월간코드챌리지시즌3-없는-숫자더하기 (0) | 2022.06.23 |
2022-06-21-프로그래머스-카카오인턴십-키패드누르기 (0) | 2022.06.23 |
2022-06-15-2021카카오-숫자문자열과-영단어 (0) | 2022.06.23 |
2022-06-14-카카오_신규아이디추천 (0) | 2022.06.23 |
댓글