-
[Programmers][C++][Java] 크레인 인형뽑기 게임Algorithm/Programmers 2022. 3. 5. 16:00
문제 유형 : Implements
https://programmers.co.kr/learn/courses/30/lessons/64061
나의 풀이
카카오 기출문제로 인형뽑기 게임을 만드는 쉬운 구현문제입니다. 각 배열의 위에서부터 내려오는데, Java 기준으로 설명을 하면 바구니는 Stack으로 구현했고 0이 아닌 수를 Stack의 위 값과 비교 후 같으면 pop, 아니면 push를 해주었습니다. 또한 pop을 할 때 2개가 사라지니 answer에 2씩 더해주어야 합니다. 재밌는 크레인 문제였습니다. : )
* C++ Code
#include <string> #include <vector> using namespace std; int solution(vector<vector<int>> board, vector<int> moves) { //정답 int answer = 0; //바구니 벡터 생성 vector<int> basket; //moves의 번수 만큼 for(int i=0;i<moves.size();i++){ //move index설정 int moves_idx = moves[i] - 1; for(int j=0;j<board.size();j++){ //만일 비어있지 않다면 if(board[j][moves_idx] != 0){ //바구니에 담고 보드 0처리 basket.push_back(board[j][moves_idx]); board[j][moves_idx] = 0; //만일 바구니 안에 같은게 2개라면 if(basket.size() > 1 && (basket.back() == basket[basket.size()-2])){ answer += 2; basket.pop_back(); basket.pop_back(); } break; } } } return answer; }
* Java Code
import java.util.*; class Solution { static int answer; static Stack<Integer> stack = new Stack<>(); public int solution(int[][] board, int[] moves) { for (int i = 0; i < moves.length; i++) moveCrane(board, moves[i] - 1); return answer; } static void moveCrane(int[][] board, int col) { for (int i = 0; i < board.length; i++) { if (board[i][col] != 0) { if (!stack.isEmpty()) { if (stack.peek() == board[i][col]) { answer += 2; stack.pop(); } else stack.push(board[i][col]); } else stack.push(board[i][col]); board[i][col] = 0; break; } } } }
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers][C++] 카카오프렌즈 컬러링북 (0) 2022.03.08 [Programmers][C++] 신규 아이디 추천 (0) 2022.03.05 [Programmers][C++] 로또의 최고 순위와 최저 순위 (0) 2022.03.05