Argorithm
[Programmers]LV.1 햄버거 만들기
빙응이
2023. 12. 13. 21:57


📝풀이
1. 배열에서 1231검색하기
2. 만약 발견하면 반복문을 다시 적용해줘야함.
고민한 것은 1231을 어떻게 검색하느냐? 였다.
자바는 Python처럼 replese가 있는게 아니라서 하나하나 검사하기로 했다.
import java.util.ArrayList;
class Solution {
public int solution(int[] ingredient) {
StringBuilder sb = new StringBuilder();
int answer = 0;
for (Integer num : ingredient)
sb.append(num);
for (int i = 0; i < sb.length() - 3; ) {
if (sb.charAt(i) == '1' && sb.charAt(i + 1) == '2' && sb.charAt(i + 2) == '3' && sb.charAt(i + 3) == '1') {
sb.delete(i, i+4);
answer++;
if(i >=3)
i -= 3;
else
i = 0;
} else {
i++;
}
}
return answer;
}
}
배열 관리를 StringBuilder로 진행하였다. String에 대한 다양한 기능과 특히 중간 삭제 부분이 명확해서 사용하였다.
1231을 검색하고 만약 찾는다면 그 부분을 삭제한 후에 조건에 따라 반복문의 위치를 바꿔주었다.
만약 1231을 삭제하면 전의 최대 3개의 배열도 다시 검사해야 하기 때문에 -3을 해야한다.