프로그래머스 | 햄버거 만들기 (Java)

mul·2023년 2월 18일
0

알고리즘

목록 보기
24/65
post-custom-banner

🔒 문제

프로그래머스 Lv.1 연습문제 햄버거 만들기

🔑 해결

상수에게 전해지는 재료의 정보를 나타내는 정수 배열 ingredient가 주어졌을 때, 상수가 포장하는 햄버거의 개수를 return하는 solution 함수를 작성하는 문제이다.

ingredient에 저장된 값을 순서대로 stack에 넣으면서, stack에 저장된 값의 수가 4이상이면 위에서부터 4번째까지의 값을 꺼내 [1, 2, 3, 1]이면 answer에 1을 더하고, [1, 2, 3, 1]이 아니라면 다시 stack에 push한다.

  1. Integer 타입을 저장할 Stack stack 선언
  2. ingredient의 크기만큼 for문을 돌려 순서대로 stack에 ingredient[i]의 값을 push
  3. 만약 stack에 들어간 값의 개수가 4이상이라면, 최근에 들어간 값으로부터 4번째 값까지 꺼내어 각각 bread2, meat, veg, bread1 변수에 저장한다.
  4. bread1과 bread2에 저장된 값이 1이고, meat은 3, veg가 2라면 answer++
  5. 아니라면, 상수가 햄버거를 포장할 수 없으므로 다시 stack에 집어넣는다.

🔓 코드

import java.util.Stack;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < ingredient.length; i++) {
			stack.push(ingredient[i]);
			if (stack.size() >= 4) {
				int bread2 = stack.pop();
				int meat = stack.pop();
				int veg = stack.pop();
				int bread1 = stack.pop();
				if (bread1 == 1 && bread2 == 1 && veg == 2 && meat == 3) {
					answer++;
				} else {
					stack.push(bread1);
					stack.push(veg);
					stack.push(meat);
					stack.push(bread2);
				}
			}
		}
        
        return answer;
    }
}
post-custom-banner

0개의 댓글