TIL

[코테연습] 2405. Optimal Partition of String

크라00 2024. 6. 28. 13:43


- 탐욕법
- 문제 분석
 1. 문자열이 주어진다.
 2. 문자열을 자른다.
 3. 이때 자르는 기준은 문자가 중복되지 않도록 하는 것.
 4. 예를 들면, abaca 가 있을 경우, ab ac a 로 잘라야 같은 문자가 중복되지 않는다.


 - 문제풀이
 1. 특정 문자를 toCharArray() 로 자른다. 
 2. char[] 를 선언하여 for 문으로 반복한다.
 3. 반복문을 시행하면서 같은 문자가 반복되었는지 확인하기 위해 boolean[] visited 배열을 선언한다.
   3-1. boolean[] visited 배열의 최대 length 는 100 으로 선언한다.
   3-2. char[] 가 반복하면서 알파벳의 값이 최대 100을 넘으므로, 가장 작은 숫자에 해당하는 알파벳 'a' 를 차감한다.
   3-3. visited[ch] 로 확인한다.
 4. 반복되었다면, 다시 해당 문자로 돌아간다.
   4-1. 돌아갈때, 총 count 값을 더한다.
   4-2. visited 는 초기화하여 다시 중복 값을 확인한다.

 

class Solution {
    public int partitionString(String s) {
        char[] charArr = s.toCharArray();
        int count = 1;
        boolean[] visited = new boolean[100];
        for (int i = 0; i < charArr.length; i++) {
            int ch = charArr[i] - 'a';
            if (!visited[ch]) {
                visited[ch] = true;
            } else {
                count++;
                i--;
                visited = new boolean[100];
            }

        }
        return count;
    }
}