Problem
2 x 2 배열의 보드판이 주어집니다.
인형을 뽑는 위치를 정하는 moves
배열이 정해집니다.
위치는 가로만 정해지며, 해당 위치의 가장 위에 있는 인형만 뽑을 수 있습니다.
뽑은 인형은 바구니에 순서대로 쌓이며, 같은 인형이 연달아 들어온 경우 두 인형은 사라집니다.
사라진 인형의 갯수를 구해야 합니다.
Solution
단순한 구현 문제입니다.
moves
를 순회하며 인형 뽑기, 바구니에 넣기, 사라지게 하기를 순서대로 구현합니다.
보드의 높이만큼 확인해서 0 이 아닌 좌표를 찾습니다.
뽑은 인형 자리는 0 으로 바꿔줍니다.
바구니는 Stack
으로 관리하면 됩니다.
한 가지 주의할 점은 사라진 횟수가 아닌 사라진 인형의 갯수를 구하는 문제이기 때문에 answer += 2
로 해주어야 합니다.
Java Code
import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); for (int move : moves) { int row = move - 1; for (int col = 0; col < board.length; col++) { if (board[col][row] == 0) continue; int doll = board[col][row]; board[col][row] = 0; if (!stack.isEmpty() && stack.peek() == doll) { stack.pop(); answer += 2; } else { stack.push(doll); } break; } } return answer; } }
'알고리즘 문제 > Programmers' 카테고리의 다른 글
[프로그래머스] 2019 카카오 겨울인턴. 불량 사용자 (Java) (0) | 2020.05.12 |
---|---|
[프로그래머스] 2019 카카오 겨울인턴. 튜플 (Java) (0) | 2020.05.12 |
[프로그래머스] 체육복 (Java) (1) | 2020.03.27 |
[프로그래머스] 위장 (Java) (0) | 2019.11.26 |
[프로그래머스] 전화번호 목록 (Java) (0) | 2019.11.26 |