Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 누가 보기는 하는걸까...ㅠㅠ
- network
- dfs
- 나도 코딩 잘할래!!!!!!!!!!!
- 크레인 인형뽑기
- 프로그래머스
- open weather api
- 주니어개발자
- FutureBuilder
- bloc
- 다트&플러터
- Flutter2.8
- 포?코DX
- 이직
- flutter
- flutter secure storage
- 쒸익!!!!!!!!!
- 주변에는 능력자 뿐이야!!
- 플러터 책
- flutter_secure_storage
- 플러터
- Null Safety
- flutter-layout
- flutter_local_notification
- TODO
- 편하다요
- hero animation
- 코딩 잘하고 싶어!!
- 댓글이 하나도 없오...ㅠㅠ
- 다트 책
Archives
- Today
- Total
오늘하루도 우힣ㅎ
크레인 인형뽑기 게임 - c++ (2019 카카오 개발자 겨울 인턴십) 본문
해당 문제는 프로그래머스에서 level1에 있다. 아래는 해당 문제의 출처이다.
https://programmers.co.kr/learn/courses/30/lessons/64061
해당 문제의 경우 stack을 이용하여 풀어야 한다.
- 같은 캐릭터가 들어가게 될경우 stack에서 해당 캐릭를 pop하도록 한다
- 들어가는 캐릭터와 stack의 top에 있는 것이 다르다면 그냥 push한다.
-> 나의 경우 같은 캐릭터가 있을경우 pop을 한다음에 또 한번 체크를 해주어야 한다는 실수를 했었다. 전혀 그럴필요가 없는데 말이다...
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves){
int answer=0;
vector<int> basket;//크레인에서 옮겨져 오는 것들을 모아 두는 바구니
for(int i=0;i<moves.size();i++){
int emptyCnt=0;//빈공간들을 세어주기 위한 변수
int value;
for(int j=0;j<board.size();j++){
value = board[j][moves[i]-1];//크레인이 세로로 움직인다는 것을 생각하여 j를 우선적으로보기
if(value == 0) emptyCnt++;
else break;
}
//만약 모든 부분이 비어 있다면 아래의 코드를 실행하면 안됨을 의미한다.
if(emptyCnt<board.size()){
basket.push_back(value);//크레인이 뽑아온것을 넣어주고
board[emptyCnt][moves[i]-1]=0;//뽑아온곳의 값은 0으로 하여 비어있음을 명시
//가장위의 값과 그 아래의 값이 같을때
if(basket.size()>=2 && value==basket[basket.size()-2]){
basket.pop_back();
basket.pop_back();
answer+=2;//한번에 두개의 인형이 사라지므로 +2
}
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
네트워크 - c++ (DFS/BFS) (0) | 2020.06.17 |
---|---|
Summer/Winter Coding(~2018)기지국 설치 - c++ (0) | 2020.05.21 |
카카오프렌즈 컬러링북 - c++ (2017 카카오코드 예선) (0) | 2020.05.02 |
비밀지도 - c++ (2018 2018 KAKAO BLIND RECRUITMENT) (0) | 2020.04.20 |
Comments