-
[프로그래머스] 크레인 인형뽑기 게임개발공부/코딩테스트 연습문제 2022. 1. 4. 16:47
문제 설명과 제한 사항


문제를 간단히 설명하면 N x N 형태의 뽑기판을 board[N][N]
크레인의 위치를 moves[] 로 정의할 때,
같은 인형을 연속으로 뽑으면 두 인형이 사라진다.
이때 moves에 따른 사라지는 인형의 갯수를 반환하면 된다.
풀이
import java.util.Stack; class Solution { public int solution(int[][] board, int[] moves) { Stack<Integer> box = new Stack<Integer>(); int answer = 0; for(int move : moves){ int height = 0; int m = move - 1; while(board[height][m] == 0) { if(height == board.length-1) break; height++; } if(board[height][m] == 0) continue; if(box.empty()) { box.push(board[height][m]); board[height][m] =0; } else { if(box.peek() == board[height][m]) { box.pop(); board[height][m] = 0; answer = answer +2; } else{ box.push(board[height][m]); board[height][m] =0; } } } return answer; } }++
1. Stack 클래스 사용.
2. moves 갯수만 큼 반복 안에 뽑을 인형의 위치를 찾아 뽑는 과정.
3. for each문에서 조건을 만족했을때 다음으로 넘어가는 방법 continue
ㄴ 기억이 안나서 break;를 사용 했었다..
4. 과정에서 2차배열에서 높이와 move의 위치를 헷갈려서 반대로 했었다.
5. pop을 하던 push를 하던 인형을 뽑았으면 해당 위치를 0으로 바꿀 생각을 못해서
항상 가장 위에 있는 인형을 뽑았었다.
여담 : 문제 자체가 장황해서 문제를 읽는게 힘들었다. 알고리즘은 금방 짜게 됐다.
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] 음양 더하기 (0) 2022.01.04 [프로그래머스] 내적 (0) 2022.01.04 [프로그래머스] 없는 숫자 더하기 (0) 2022.01.04 [프로그래머스] 신규 아이디 추천 (0) 2022.01.04 [프로그래머스] 로또의 최고 순위와 최저 순위 Java (0) 2022.01.04