티스토리 뷰
풀이
vector 컨테이너를 사용해 스택 자료구조를 흉내냈다.
return해야 될 것은 크레인 작동이 끝난 후 터트려져 사라진 인형의 개수.
- 스택에 push할 경우
1. 스택이 비어있다
2. 스택의 top이 크레인으로 끄낸 인형과 다르다.
- 스택에서 pop할 경우
1. 크레인으로 끄낸 인형이 스택의 top과 같다.(answer를 2개씩 증가)
더보기
#include <string>
#include <vector>
// 격자의 상태가 담긴 2차원 배열 board
// 크레인의 위치 배열 moves(1~1000)
// 사라진 인형의 개수를 return
// 0~100 인형의 종류
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
vector<int> basket;
vector<int>::iterator cIter;
int doll;
// 크레인의 움직임
cIter = moves.begin();
while(cIter!=moves.end())
{
// 보드의 행 검사
for(int i=0; i<board.size(); i++)
{
doll = board[i][*cIter - 1];
if(doll != 0)
{
// 바구니와 비교
if(!basket.empty())
{
if(basket.back() == doll)
{
basket.pop_back();
answer += 2;
}
else
{
basket.push_back(doll);
}
}
else
{
basket.push_back(doll);
}
board[i][*cIter - 1] = 0;
break;
}
}
// 다음 움직임
cIter++;
}
return answer;
}
728x90
반응형
'Programmers Solutions > previous' 카테고리의 다른 글
스킬트리(Summer/Winter Coding(~2018)) (0) | 2020.07.31 |
---|---|
다트 게임(2018 카카오 블라인드 채용) (0) | 2020.07.31 |
실패율(2019 카카오 블라인드 채용) (0) | 2020.07.31 |
비밀지도(2018 카카오 블라인드 채용) (0) | 2020.07.31 |
예산(Summer/Winter Coding(~2018)) (0) | 2020.07.31 |
댓글