99클럽 코테 스터디 34일차 TIL
💙 JAVA 비기너
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
StringBuilder sb = new StringBuilder();
for(int igdt : ingredient) {
sb.append(igdt);
if(sb.length() >= 4) {
if("1231".equals(sb.substring(sb.length() - 4))) {
sb.delete(sb.length() - 4, sb.length());
answer++;
}
}
}
return answer;
}
}
사실 첫번째 코드는 실패했다.
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
String ingredients = "";
for(int igdt : ingredient) {
ingredients += igdt;
if(ingredients.contains("1231")) {
answer++;
ingredients = ingredients.replace("1231", "");
}
}
return answer;
}
}
단순하게 ingredient
를 문자열로 만들어서 "1231"이 있을 때마다 answer
를 1 증가해주고 문자열에서 "1231"을 지우면 되는 거 아니야!? 하고 작성했는데
두둥탁...!!!
시간 초과로 인해 실패하였다...
아니... 왜? 그럼 ArrayList로 해야하는건가?? 그럼 한번 비교할 때마다 4개씩...?? 하고 검색하다가 StringBuilder의 존재를 기억하게 되었다.
그래서 StringBuilder로 구현해보려고 했으나 너무 오랜만인 까닭에 다시 공부해야했다.
StringBuilder sb
에 ingredient
를 하나씩 넣어주고 sb
의 길이가 4이상이 되면 마지막 4개의 항목에 "1231"이 있는지 확인한다. 마지막 4개만 검사하는 이유는 for문이 돌면서 이미 앞에 있는 요소들도 확인했기 때문이다.
마지막 4개의 항목에 "1231"이 있다면 sb
에서 "1231"을 삭제하고 answer
를 1 증가해준다.
📑 StringBuilder 공부자료