다희의 코딩 성장일기

[프로그래머스] level1. 크레인 인형뽑기 게임 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 크레인 인형뽑기 게임 (자바 JAVA)

ilmiodiario 2021. 8. 19. 20:00

[ 문제 ]  [프로그래머스] level1. 크레인 인형뽑기 게임 (자바 JAVA)

 

문제 링크 : https://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


# 접근 방법 및 풀이 

 

  • 스택을 이용해서 풀었다. 스택에 2개이상 같은 값이 들어있다면 cnt를 증가시켜준다.
  • 스택은 최신에 들어간 값이 꼭대기에 있기 때문에 스택이 비어있지 않다면, 꼭대기 값이랑 현재 넣을 값이 같으면 pop해서 빼주고 cnt+2씩 하면된다.

# 주의할 점 

 

  • 모든 행에 대해서 탐색할때 0이 아닌 숫자를 발견한 후 break할 것

 

JAVA 코드
import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();
        for(int k = 0 ; k < moves.length; k++){
            int j = moves[k]-1;
            for(int i = 0; i < board.length; i++){
                if(board[i][j]!=0){
                    int num = board[i][j];
                    board[i][j] = 0;
                    if(stack.isEmpty()){
                        stack.add(num);
                    }else{
                        if(stack.peek() == num){
                            stack.pop();
                            answer+=2;
                        }else{
                            stack.add(num);
                        }
                    }
                    break;
                }
            }
        }
        return answer;
    }
}

 

 

 

REVIEW

Comments