각각의 인형이 담긴 2차원 배열(board)과 크레인이 움직일 때마다 몇번째 칸까지 이동할지를 적어둔 1차원 배열(moves)로 크레인 인형 뽑기를 코드로 구현한 알고리즘
조건)
* 인형은 각각의 고유 번호를 가지고 있음
* 크레인이 이동 중 인형을 찾은 경우, 찾은 인형의 번호와 Stack 객체의 최상단의 인형 번호가 같다면 pop() 시키고, 해당 인형 번호를 0으로 변환시킴
* 위와 반대되는 경우, Stack 객체에 push() 시키고, 해당 for문을 break함.
public int accept(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int pos : moves) { // for (int j=0; j<moves.length; j++) {
for (int i=0; i<board.length; i++) {
if (board[i][pos-1] != 0) {
int tmp = board[i][pos-1];
board[i][pos-1] = 0;
if (stack.peek() == tmp && !stack.isEmpty) {
stack.pop();
answer += 2;
} else {
stack.push(tmp);
break;
}
}
}
return answer;
}
}
'Algorithm' 카테고리의 다른 글
(Java) 평균 구하기(백준 1546) (0) | 2023.06.06 |
---|---|
(Java) 숫자의 합 구하기(백준 11720) (0) | 2023.06.04 |
(Java) 문제 4 - 매개인자 중 정수 123456789에 포함되지 않은 숫자의 합을 구하는 문제 (0) | 2023.01.15 |
(Java) 문제 3 - 매개인자 123이 주어지면 1 + 2 + 3 값을 반환하는 문제 (0) | 2023.01.15 |
(Java) 문제 1 - 문자열 뒤집기 (0) | 2021.04.21 |