본문 바로가기

TLI/코드카타

2024.05.28 TIL 코트카타 65번(문자열나누기)

    fun solution(s: String): Int {
        var answer: Int = 0

        var startChar = s[0]
        var numStartChar = 1
        var numUnStartChar = 0
        for(sIndex in 1..s.length-1) {

            if(numStartChar == 0) {
                startChar = s[sIndex]
                numStartChar = 1
                continue
            }

            if(startChar == s[sIndex])
                numStartChar++
            else
                numUnStartChar++

            if(numStartChar == numUnStartChar) {
                answer++
                numStartChar = 0
                numUnStartChar = 0
            }

        }

        if(numStartChar != numUnStartChar)
            answer++

        return answer
    }

 

포인트

- 기준이 되는 문자, 그 외의 문자의 개수를 count한다.

- 같아지는 지점에서 answer를 +1하고 다음 인덱스의 문자를 기준으로 삼는다.

- s의 마지막 인덱스에서 answer가 추가 됐는지 확인해서 추가되지 않았으면 answer에 +1해준다.

   - 마지막 문자열이 규칙에 맞지 않아도 나눠야 하기 때문

   - 규칙에 맞게 나눠졌다면 딱 떨어진 것이기 때문에 answer의 값을 추가하면 안된다.