[프로그래머스][크레인 인형뽑기]-Lv.1

호준·2022년 1월 3일
0

Algorithm

목록 보기
45/111
post-thumbnail

문제

크레인 인형뽑기


코드

import java.util.Stack;
class Solution {
    public int solution(int[][] board, int[] moves) {
        Stack<Integer> stack = new Stack<>();
        int count=0;
        stack.push(0);
        int N = board.length;
        for(int i=0; i<moves.length; i++){
            for(int j=0; j<N; j++){
                int n = board[j][moves[i]-1];
                if(n!=0){ // 데이터가 있을 경우
                    if(stack.peek()==n){
                        stack.pop();
                        count++;
                    }else{
                        stack.push(n);
                    }
                    board[j][moves[i]-1]=0; // 데이터 사용했다는 뜻으로 0으로 표시
                    break; // 한번만 사용하기때문에 반복문 종료
                }
            }
        }
        int answer = count*2;// 없어진 인형의 개수이기 때문에 수행한 수의 X2
        return answer; 
    }
}

알고 넘어가기

Stack의 선언 : java Stack<Data type> stack = new Stack<>()
Data type 예 : Integer, String 등등
stack은 FILO(First In Last Out)이다 처음 들어온 값은 나중에 나간다.
(제일 마지막에 들어온 값이 제일 먼저 나간다.)
stack.peek() : 제일 마지막에 들어간 값을 참조
stack.pop() : 제일 마지막에 들어간 값을 반환 및 stack에서 제거

profile
도전하지 않는 사람은 실패도 성공도 없다

0개의 댓글