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

윤준혁·2024년 3월 10일

나의 풀이

import java.util.*;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        
        for (int i : ingredient) { // 1
            list.add(i);
            if (list.size() >= 4) { // 2
                if (list.get(list.size() - 4) == 1 && 
                    list.get(list.size() - 3) == 2 && 
                    list.get(list.size() - 2) == 3 && 
                    list.get(list.size() - 1) == 1) {
                    for (int j = 0; j < 4; j++) { // 3
                        list.remove(list.size() - 1);
                    }
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

과정

  1. 주어진 정수 배열 ingredient를 ArrayList에 넣어준다
  2. list의 크기가 4 이상일 때, 만약 list가 1, 2, 3, 1의 형태를 취하면
  3. 1, 2, 3, 1의 형태를 띈 원소들을 삭제하고 answer을 증가시킨다

다른 사람 풀이

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;
    }
}
  • 배열을 리스트로 바꾸지 않고 푼게 참 대단한듯하다
  • 컴파일되는 시간도 훨씬 짧다

0개의 댓글