https://programmers.co.kr/learn/courses/30/lessons/64061
문제 파악
1. 크레인이 moves 배열의 위치로 가서 인형을 뽑는다 (이동 후 board [row][col]!= 0 인 위치 찾기)
2. 해당 row를 찾아서 값을 가져오고 바구니에 순차적으로 쌓는다. (Stack)
3. 이전에 쌓여있는 인형과 지금 뽑아서 바구니에 넣으려는 인형이 같다면 터트린다. (이 과정에서 인형 2개가 사라짐)
그리고 뽑은 위치의 board[row][col] 값은 0으로 처리한다.
나는 한 col 모두 0 일 경우를 예외 처리 하는 로직만 좀 더 추가했다.
더보기
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> st = new Stack<>();
//PrintArray(board);
for(int idx = 0; idx<moves.length;idx++)
{
int col = moves[idx]-1;
int row = FindDolls(board,col);
int value = board[row][col];
if(!st.isEmpty() && st.peek() == value)
{
st.pop();
answer+=2;
}
else
{
if(value!=0) st.push(value);
}
board[row][col] = 0;
}
return answer;
}
public int FindDolls(int[][] board, int col){
int row = 0;
boolean init = false;
for(int r = 0; r<board.length;r++){
if(board[r][col]!=0){
row = r;
init = true;
break;
}
}
return init ? row : 0 ;
}
public void PrintArray(int[][] board){
for(int r = 0; r<board.length;r++){
for(int c = 0; c<board[r].length;c++)
{
System.out.print(board[r][c] +" ");
}
System.out.println();
}
}
}
'PS' 카테고리의 다른 글
[Programmers] LV3 - 단어 변환 (0) | 2021.07.05 |
---|---|
[Programmers] LV3 - 순위 (0) | 2021.07.03 |
[Programmers] LV2 - 짝지어 제거하기 (0) | 2021.06.30 |
[Programmers] LV2 - 영어 끝말잇기 (0) | 2021.06.29 |
[BOJ] 1141번 : 접두사 (0) | 2021.06.28 |