티스토리 뷰

문제

프로그래머스 2019 카카오 개발자 겨울 인턴십 - 인형뽑기 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


풀이

  • 바구니에서는 가장 마지막에 들어간 인형이 계속해서 필요하기 때문에 stack으로 구현했다
  • checkBasket은 뽑은 인형을 바구니에 넣을때 실행하는 함수이다
  • moves 배열에 들어있는 순서대로 인형을 뽑은 후에는 해당 인형이 있던 자리를 0으로 바꿔줘야한다
  • 해당 열에서 인형을 뽑았으면  다음 인형은 뽑지 못하게 하도록 break로 반복문을 나가줘야한다
  • 터진 인형은 pop으로 사라진 인형 갯수의 2배이므로 count*2를 해야한다

코드

import java.util.Stack;

class Solution {
	static Stack<Integer> basket = new Stack<Integer>();
	static int count;
	
	static public void checkBasket(int curDoll) {
		if(basket.isEmpty()) {
			basket.push(curDoll);
		} else if(basket.peek() == curDoll) { 
			basket.pop();
			count++;
		} else { 
			basket.push(curDoll);
		}
	}
	
	public int solution(int[][] board, int[] moves) {
		int answer = 0;

		for(int i=0; i<moves.length; i++){ 
			int crane = moves[i]-1;
			
			for(int j=0; j<board.length; j++) { 
				int doll = board[j][crane];
				
				if(doll == 0) continue; 
				else{
					checkBasket(doll);	
					board[j][crane] = 0;
					break;
				}
			}
		}
		answer = count*2;
		return answer;
    } 
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함