문제
programmers.co.kr/learn/courses/30/lessons/64061
1. 정사각형
2. 같은 모양 두 개가 바구니에 쌓이게 되면 터뜨려지면서 바구니에서 사라짐.
3. 바구니 크기 무제한임
4. 게임 화면 -> 2차원 배열 board
- 0부터 시작
5. 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves
6. 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록
- 바구니 : Stack
- 크레인 이동
- 인형 같으면 빼고
- 사라진 인형
- 사라진 인형 일 때, *2
- 사라진 곳 -> 0으로 채움
- 인형 추가
import java.util.Stack;
public class 크레인인형뽑기게임_카카오 {
public static void main(String[] args) {
System.out.println(solution(new int[][]{
{0,0,0,0,0},
{0,0,1,0,3},
{0,2,5,0,1},
{4,2,4,4,2},
{3,5,1,3,1}},
new int[]{1,5,3,5,1,2,1,4}));
}
public static int solution(int[][] board, int[] moves) {
int answer = 0;
// 바구니
Stack<Integer> stack = new Stack<>();
// 크레인 이동
for(Integer move : moves) {
int moveIndex = move - 1; // board는 0부터 시작이라 moves에다가 -1 빼주었음
for(int i = 0; i < board.length; i++) {
int k = board[i][moveIndex];
if(k == 0) continue;
if(!stack.empty() && stack.peek() == k) { // 빼고
stack.pop();
answer++;
} else { // 넣고
stack.push(k);
}
board[i][moveIndex] = 0;
break;
}
}
return answer * 2;
}
}
(참고)
- stack
'Other > 코테 문제' 카테고리의 다른 글
[코테] 기능개발_스택/큐_2단계 - "Math.ceil()" (0) | 2021.05.08 |
---|---|
[코테] 음양 더하기 (0) | 2021.04.28 |
[코테] 3진법 뒤집기 (0) | 2021.04.27 |
[코테] K번째수_정렬 - "Arrays.copyOfRange("원본 배열", "복사할 시작인덱스", "복사할 끝인덱스")" (0) | 2021.04.27 |
[코테] 시저 암호 - "일정한 거리만큼 밀어서 다른 알파벳으로 바꿈" (0) | 2021.04.26 |