Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨 Lv.1 - 햄버거만들기(순차적인 stack 조건처리)
깝몬 2024. 10. 29. 23:36

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/133502#

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

해답

 

import java.util.*;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        
        Stack<Integer> ing = new Stack<>();
        int size = 0;
        
        for(int ingN : ingredient){
            ing.push(ingN);
            
            size = ing.size();
            if(size>3 && ing.get(size-1)==1){
                if(ing.get(size-2)==3 && ing.get(size-3)==2 && ing.get(size-4)==1){
                    ing.pop();
                    ing.pop();
                    ing.pop();
                    ing.pop();
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

 

해설

 

일단 stack에 내용물을 추가한 후 내용물의 개수와, 그리고 들어간 숫자에 따라 판단하여 stack의 개수를 줄이고 반복진행하는 문제였다. 

 

로직의 순서에서 개수를 먼저검사했다가 딱 4개일때 처리되는 경우가 있어서 곤욕을 치렀다.

 

로직에서 먼저 일어나야할 일에 대한 조건을 따지는 생각을 더 키워보아야할 것 같다.