[프로그래머스] 코딩 테스트 연습 - 크레인 인형뽑기 게임(Java)

수경·2022년 12월 5일
0

problem solving

목록 보기
71/174

프로그래머스 - 크레인 인형뽑기 게임

풀이

  1. move 배열을 순회하면서 인형을 고름
    ❗️행과 열 정확하게 구분해야 함
    ❗️해당 배열 값이 0 = 인형이 없음 ➡️ 다시 고르기

  2. 고른 인형 toy를 스택에 넣기
    ❗️스택의 top 요소가 toy와 같다면 상쇄되어 사라짐 ➡️ 두 개가 사라지므로 최종 리턴값에 2를 더해줌
    ❗️배열에 인형이 없어서 인형을 고르지 못한 경우(toy = -1) 스택에 넣지 않음


코드

import java.util.Stack;

public class ToyCrane {
	public int solution(int[][] board, int[] moves) {
		Stack<Integer> stack = new Stack<>();
		int result = 0;
		for (int m : moves) {
			int toy = pickToy(board, m);
			if (!stack.isEmpty() && stack.peek() == toy) {
				stack.pop();
				result += 2;
			}
			else if (toy != -1) stack.push(toy);
		}
		return result;
	}

	private int pickToy(int[][] board, int m) {
		for (int i = 0; i < board.length; i++) {
			if (board[i][m - 1] != 0) {
				int tmp = board[i][m - 1];
				board[i][m - 1] = 0;
				return tmp;
			}
		}
		return -1;
	}

	public static void main(String[] args) {
		ToyCrane toyCrane = new ToyCrane();

		int[][] board = 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}
		};
		int[] moves = new int[]{1,5,3,5,1,2,1,4};
		System.out.println(toyCrane.solution(board, moves));    // 4
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글