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을 해야한다.

댓글수0