관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 세 개의 구분자 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 세 개의 구분자 (Kotlin)

참깨빵위에참깨빵 2024. 6. 4. 22:31
728x90
반응형

 

myStr에서 a, b, c를 모두 제거해야 하기 때문에 정규식을 사용해서 푸는 법을 생각해볼 수 있다.

 

class Solution {
    fun solution(myStr: String): Array<String> {
        val result = myStr.split("[abc]".toRegex()).filter { it.isNotEmpty() }
        return if (result.isEmpty()) arrayOf("EMPTY") else result.toTypedArray()
    }
}

 

split()의 결과로 a, b, c를 기준으로 나눈 리스트가 리턴되고 filter를 써서 공백을 제거한다.

공백 제거 후 남는 문자열들이 있는 경우와 아닌 경우 각각 다른 값을 리턴하게 하면 문제는 풀린다.

 

다른 방법은 정규식을 쓰지 않고 for문과 조건문을 쓰는 것이다. 그리고 최대 100만 개의 문자열을 다루기 때문에 StringBuilder도 같이 사용한다.

 

class Solution {
    fun solution(myStr: String): Array<String> {
        val result = mutableListOf<String>()
        var temp = StringBuilder()

        for (char in myStr) {
            if (char == 'a' || char == 'b' || char == 'c') {
                if (temp.isNotEmpty()) {
                    result.add(temp.toString())
                    temp = StringBuilder()
                }
            } else {
                temp.append(char)
            }
        }

        if (temp.isNotEmpty()) {
            result.add(temp.toString())
        }

        if (result.isEmpty()) {
            result.add("EMPTY")
        }

        return result.toTypedArray()
    }
}

 

반응형
Comments