

나의 풀이
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;
}
}
과정
- 주어진 정수 배열 ingredient를 ArrayList에 넣어준다
- list의 크기가 4 이상일 때, 만약 list가 1, 2, 3, 1의 형태를 취하면
- 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;
}
}
- 배열을 리스트로 바꾸지 않고 푼게 참 대단한듯하다
- 컴파일되는 시간도 훨씬 짧다