프로그래머스 햄버거 만들기 JAVA 풀이 (스택, 구현)

2026. 6. 27. 23:40·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

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

programmers.co.kr


📌 문제 개요

햄버거 재료가 순서대로 전달된다.

재료는 아래에서부터 차곡차곡 쌓이며 빵(1) → 야채(2) → 고기(3) → 빵(1) 순서가 완성되면 햄버거 하나를 포장한다.

 

포장된 재료는 즉시 제거되며, 남아있는 재료들로 다시 햄버거가 만들어질 수도 있다.

최종적으로 포장한 햄버거의 개수를 반환하는 문제이다.


📌 접근 방법

재료를 순서대로 확인하면서 스택에 저장한다.

새로운 재료가 들어올 때마다 스택의 마지막 4개의 재료가 1, 2, 3, 1인지 확인한다.

햄버거가 완성되었다면 마지막 4개의 재료를 제거하고 햄버거 개수를 증가시킨다.

 

입력 크기가 최대 100만이므로 ArrayList.remove()처럼 삭제 비용이 큰 자료구조보다는

배열을 스택처럼 사용하는 방식이 효율적이다.


📌 핵심 아이디어

1. 배열을 스택처럼 사용

재료를 순서대로 저장한다.

idx는 현재 스택의 크기를 의미한다.

stack[idx++] = ingredient[i];

2. 마지막 4개의 재료만 확인

햄버거는 마지막에 만들어질 수 있으므로

새로운 재료가 들어올 때마다 마지막 4개만 확인하면 된다.

if (idx >= 4 &&
    stack[idx - 4] == 1 &&
    stack[idx - 3] == 2 &&
    stack[idx - 2] == 3 &&
    stack[idx - 1] == 1)

3. 햄버거 제거

배열에서 실제 삭제하지 않고,

스택 크기만 줄이면 제거한 것과 같은 효과를 얻는다.

시간 복잡도는 O(1)이다.

idx -= 4;
answer++;

📌 전체 코드

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;

        int[] stack = new int[ingredient.length];
        int idx = 0;

        for (int food : ingredient) {
            stack[idx++] = food;

            if (idx >= 4 &&
                stack[idx - 4] == 1 &&
                stack[idx - 3] == 2 &&
                stack[idx - 2] == 3 &&
                stack[idx - 1] == 1) {

                idx -= 4;
                answer++;
            }
        }

        return answer;
    }
}
 

📄 정리

  • 재료를 순서대로 스택에 저장한다.
  • 마지막 4개의 재료만 확인하면 된다.
  • 햄버거가 완성되면 스택 크기를 4 줄여 제거 효과를 낸다.
  • 배열을 스택처럼 사용하면 최대 입력 크기에서도 효율적으로 해결할 수 있다.
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 로또의 최고 순위와 최저 순위 JAVA 풀이 (완전탐색, 구현)  (0) 2026.06.29
프로그래머스 동영상 재생기 JAVA 풀이 (구현, 시뮬레이션)  (0) 2026.06.28
프로그래머스 대충 만든 자판 JAVA 풀이 (HashMap, 구현)  (0) 2026.06.26
프로그래머스 정수를 나선형으로 배치하기 JAVA 풀이 (구현, 시뮬레이션)  (0) 2026.06.26
프로그래머스 신호등 정전 JAVA 풀이 (시뮬레이션, 최소공배수)  (0) 2026.06.25
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 로또의 최고 순위와 최저 순위 JAVA 풀이 (완전탐색, 구현)
  • 프로그래머스 동영상 재생기 JAVA 풀이 (구현, 시뮬레이션)
  • 프로그래머스 대충 만든 자판 JAVA 풀이 (HashMap, 구현)
  • 프로그래머스 정수를 나선형으로 배치하기 JAVA 풀이 (구현, 시뮬레이션)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    정처기실기
    정처기오답노트
    자료구조
    배열
    알고리즘
    구현
    solved.ac
    브루트포스
    level0
    실기
    백엔드개발자
    dp
    자바
    기출문제
    코딩테스트
    정렬
    springboot
    피보나치
    문자열
    프로그래머스
    정보처리기사
    정처기
    완전탐색
    시뮬레이션
    정보처리기사 실기 기출문제
    java
    Level2
    백준
    level1
    수학
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 햄버거 만들기 JAVA 풀이 (스택, 구현)
상단으로

티스토리툴바