본문 바로가기
ALGORITHMS/SOLUTION

[JAVA: 프로그래머스] 햄버거 만들기

by alasdkfm 2023. 7. 22.

목차

    문제

     

    프로그래머스

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

    programmers.co.kr

     

    내풀이

    import java.util.Stack;
    
    class Solution{
        public int solution(int[] ingredient) {
            Stack<Integer> stack = new Stack<>();
            int answer = 0;
            for (int i : ingredient)
            {
                stack.push(i);
                int sz = stack.size();
                
                if (sz>=4 && stack.peek() == 1)
                {
    
                    if (stack.get(sz-2) == 3 && 
                        stack.get(sz-3) == 2 &&
                        stack.get(sz-4) == 1 )
                    {
                            answer ++;
                            for(int j = 0; j<4;  j++)
                            stack.pop();
                    }
                }
            }
            return answer;
        }
    
    
        public static void main(String[] args){
            // int[] ingredient = new int[]{2, 1, 1, 2, 3, 1, 2, 3, 1};
            int[] ingredient = new int[]{1, 3, 2, 1, 2, 1, 3, 1, 2};
    
            Solution sol = new Solution();
            System.out.println("Answer :: "+sol.solution(ingredient));
        }
    }

    나는 STACK을 활용하였지만, 다른사람이 iint배열만 사용하여 푼 것을 보았다.

    풀이는 다음과 같다. 

     

    다른사람 풀이 

    Class Solution {
        public int solution(int[] ingredient) {
            int[] stack = new int[ingredient.length];
            int sp = 0;
            int answer = 0;
            for (int i : ingredient) {
                stack[sp++] = i;
                if (sp >= 4 && stack[sp - 1] == 1
                    && stack[sp - 2] == 3
                    && stack[sp - 3] == 2
                    && stack[sp - 4] == 1) {
                    sp -= 4;
                    answer++;
                }
            }
            return answer;
        }
    }