본문 바로가기
JAVA/프로그래머스

[Lv.1] 프로그래머스 - 햄버거 만들기 : Java

by ♡˖GYURI˖♡ 2024. 5. 10.
 

프로그래머스

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

programmers.co.kr

 

 

 

이해하기

햄버거가 쌓이는 모양을 생각하면 stack을 사용해야 하는 것까지는 떠올릴 수 있는데, 구현이 항상 어렵다.

 

  • ingredient의 값을 하나씩 가져와서 일단 stack에 push
  • 만약 stack의 사이즈가 4보다 크거나 같아지면 들어있는 값을 확인해서 햄버거 순서대로 쌓였는지 확인
    • 햄버거 순서는 위에서부터 1 - 3 - 2 - 1 
      • stack.get(stack.size() -1)이 1이고
      • stack.get(stack.size() -2)이 3이고
      • stack.get(stack.size() -3)이 2이고
      • stack.get(stack.size() -4)이 1이면
    • 햄버거 하나를 만들 수 있으니 answer++
    • 4개만큼 pop해주기

 

문제풀이

import java.util.*;

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) {
                if (stack.get(stack.size() - 1) == 1 &&
                   stack.get(stack.size() - 2) == 3 &&
                   stack.get(stack.size() - 3) == 2 &&
                   stack.get(stack.size() - 4) == 1) {
                    answer++;
                    stack.pop();
                    stack.pop();
                    stack.pop();
                    stack.pop();
                }
            }
        }
        
        
        return answer;
    }
}