CODING TEST

프로그래머스 - 햄버거 만들기

우진하다 2023. 8. 10. 18:03

풀이.

이 문제는 Stack을 사용하면 쉽게 풀 수 있는? 문제
일단 stack 에 ingredient배열을 돌면서 첫번째 요소부터 차례로 push

이후 stack 요소의 갯수가 4이상일 때 들어오는 숫자가 1(빵)이라면
stack.get메서드를 사용해 재료 순서인 1, 2, 3, 1이 맞는지 확인
맞으면 answer++ 해주고 재료비우기
그다음엔 또 push 반복해서 또 다음 조건에 만족하면 반복
아니면 그냥 push...

결국 배열을 끝까지 돌기도 하고 햄버거 완성갯수에 따라 inner for문이 반복되어
숫자가 커질수록 오래 걸리는 감이 있다.

import java.util.Stack;

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

 

 

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/133502?language=java