본문 바로가기

머리맞대는이야기/프로그래머스 (JAVA)

[2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임

반응형

출처: programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[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]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

풀이과정

바구니와 배열을 비교하여 같은 숫자가 있으면 카운팅하고 없앤다.

바구니를 스택으로 구현하여 관리하자.

 


작성코드

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
		Stack<Integer> baguni = new Stack<>();
		for (int i = 0; i < moves.length; i++) {
			int point = moves[i] - 1;
			// row 마다 컬럼 체크
			int character = 0;
			for (int j = 0; j < board.length; j++) {
                		if (board[j][point] == 0)
					continue;
				else {
					character = board[j][point];
					board[j][point] = 0;
					break;
				}

			} // for j

			if (!baguni.isEmpty() && baguni.peek() == character) {
				baguni.pop();
				// 같은 것 쌍으로 지워짐
				answer++;
				answer++;
			}

			else if (character != 0)
				baguni.push(character);

		} // for i

        return answer;
    }
}

 

 

memo

이제 문제가 길고 장황하게 나오더라도 유형이 조금씩 보이는 것 같다.

전체 2차원 배열에서 주어진 입력에 맞게 원하는 컬럼을 탐색하고 값 수정 & 결과값 도출하면 된다.

Stack을 이용하여 풀어서 더 쉽게 풀 수 있었던 것 같다.

같은 것을 쌍으로 지우기 때문에 두 번 더하는 것에 유의하자.

 

반응형