일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드엔진
- 딥러닝
- webhacking.kr
- 게임 프로그래밍
- 자바
- 계단함수
- 자바스크립트
- Old-17
- 소프트맥스 함수
- tcp
- 10809
- c언어 게임
- 코딩테스트 연습
- 퍼셉트론
- JS
- boj
- 웹해킹
- openCV
- 프로그래머스
- 신규 아이디 추천
- 네트워크
- 리버싱
- Old-14
- c++
- 5585
- 웹케이알
- 크레인 인형뽑기
- C언어
- old-1
- 백준
Archives
- Today
- Total
SteffenLee
[프로그래머스/C++] 크레인 인형뽑기 본문
안녕하세요.
이번에는 프로그래머스 코딩테스트 연습 Lv1 2019 카카오 개발자 겨울 인턴쉽 - 크레인 인형뽑기를 풀어봤습니다.
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
int n = board.size();
stack<int> list;
for(int i = 0; i < moves.size(); ++i){
int location = moves[i]-1;
for(int y = 0; y < n; ++y){
if(board[y][location] == 0) continue;
if(!list.empty() && list.top() == board[y][location]){
list.pop();
answer += 2;
}
else
list.push(board[y][location]);
board[y][location] = 0;//else문 안에 넣으면 안됨.
break;
}
}
return answer;
}
크레인 팔이 moves에 담긴 순서로 움직이고, 해당 위치로 가서 인형을 뽑습니다.
그럼 뽑힌 인형 위치의 숫자를 0으로 바꿔줍니다.
뽑힌 인형의 숫자는 스택에 담아주고, 다른 인형을 뽑습니다.
새로 뽑은 인형의 숫자와 스택에 top부분의 숫자가 같다면 pop을 해주고 answer를 2를 더해주면 됩니다.
2를 더해주는 이유는 우리가 구해야할 answer의 값은 사라진 인형의 개수를 구하는 것이기 때문입니다.
감사합니다.
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스/C++] 신규 아이디 추천 (0) | 2022.09.15 |
---|
Comments