https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <bits/stdc++.h>
int select(std::vector<std::vector<int>> & board, int x){
for (int y = 0; y < board.size(); ++y){
if (board[y][x] != 0) {
int temp = board[y][x];
board[y][x] = 0;
return temp;
}
}
return 0;
}
int solution(std::vector<std::vector<int>> board, std::vector<int> moves) {
int answer = 0;
std::stack<int> bucket;
for (int pos : moves){
// 현재 위치에서 인형을 뽑는다.
int doll = select(board, pos - 1);
// 뽑은 인형이 0이 아닌 경우, 즉 인형이 없는 위치인 경우를 제외하고
if (doll == 0) continue;
// bucket에 넣는다.
bucket.push(doll);
// bucket의 사이즈가 2보다 큰 경우
if (bucket.size() < 2) continue;
// bucket의 탑과 그 전 값이 갔을 때 까지 지우는 작업을 반복한다.
// 값을 때마다 answer += 2
while(bucket.size() >= 2){
int curr = bucket.top(); bucket.pop();
if (curr == bucket.top()){
answer += 2;
bucket.pop();
}
else {
bucket.push(curr);
break;
}
}
}
return answer;
}
'카카오 > 2019 카카오 개발자 겨울 인턴십' 카테고리의 다른 글
[C++] 2019 카카오 개발자 겨울 인턴십 - 호텔 방 배정 (1) | 2023.12.07 |
---|---|
[C++] 2019 카카오 개발자 겨울 인턴십 - 불량 사용자 (0) | 2023.07.09 |
[C++] 2019 카카오 개발자 겨울 인턴십 - 튜플 (0) | 2023.07.09 |