티스토리 뷰

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/133502

2. 풀이

자료구조를 조금 안다면, Stack문제라는걸 바로 파악할 수 있다. 

4개를 pop 했을 때, 후입선출 자료구조기 때문에 역순 빵 - 고기 - 야채 - 빵인지 판별 해서,

햄버거가 완성되면 빼고 완성되지 않으면 역순으로 삽입하면된다.

 

  1. 배열 값이 1인 빵의 개수를 센다.
  2. 스택에 삽입
  3. 빵의 개수가 짝수가 됐을 때부터 4개씩 pop하면서 햄버거인가 판별한다.
  4. 햄버거로 판별되면, 정답+1 / 빵개수 -2
  5. 햄버거가 아니면 역순으로 삽입

개인적으로 코드는 숏 코딩이고 뭐고 직관적인게 최고라고 생각한다. 내가 짠 코드가 최고란 뜻은 당연히 아니다..

3. 코드

import java.util.Stack;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();
        int breadCount = 0;
        for(int i=0; i<ingredient.length;i++) {
            if(ingredient[i] == 1) {
                breadCount += 1;
            }

            stack.add(ingredient[i]);

            if(stack.size() >= 4 && breadCount/2 > 0) {
                int first = stack.pop();
                int second = stack.pop();
                int third = stack.pop();
                int forth = stack.pop();

                if(first == 1 && second == 3 && third == 2 && forth ==1) {
                    answer++;
                    breadCount = breadCount - 2;
                } else {
                    stack.add(forth);
                    stack.add(third);
                    stack.add(second);
                    stack.add(first);
                }

            }
        }

        return answer;

    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함