import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
String s = "";
/*
for(int i=0; i<ingredient.length; i++){
s = s+ingredient[i];
if(s.contains("1231")){
s = s.replaceFirst("1231","");
answer++;
}
}
*/
StringBuilder sb = new StringBuilder();
for(int i=0; i<ingredient.length; i++){
sb.append(ingredient[i]);
if (sb.indexOf("1231") > -1) {
int index = sb.indexOf("1231");
sb.replace(index, index + 4, "");
answer++;
}
}
return answer;
}
}
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> st = new Stack<>();
for(int i=0; i<ingredient.length; i++){
st.push(ingredient[i]);
if(st.size()>=4){
int n = st.size() ;
if(st.get(n-1) == 1 && st.get(n-2) == 3 && st.get(n-3) == 2 && st.get(n-4) ==1){
st.pop();
st.pop();
st.pop();
st.pop();
answer++;
}
}
}
return answer;
}
}
처음에는 코드1의 주석 부분과 같이 String으로 풀었다. 풀면서도 String이라 효율성 문제가 있을 것 같았는데, 역시 정확도 100 효율 50으로 FAIL!
그래서 문자열 변환이 잦을 때 더 비용이 적은 StringBuilder를 사용했다. PASS될 거라 생각했는데, String을 사용했을 때와 동일한 이유로 FAIL이였다.
그래서 문자열 방법은 좋은 풀이가 아니라고 생각했고 처음부터 다시 생각했다.
문제 자체가 햄버거를 "쌓는다..." = "스택" 이라는 생각이 들어서 코드2와 같이 스택으로 풀었다.