프로그래머스 (Swift)/lv 1

[lv1] 문자열 나누기

은더기 2024. 6. 2. 15:05

문제

 

내 정답 코드

import Foundation

func solution(_ s:String) -> Int {
    var resultCount = 0
    var x:Character? = nil
    var xCount = 0
    var difCount = 0
    
    for chr in s {
        if x == nil {
            x = chr
            xCount += 1
            continue
        }
        if chr == x {
            xCount += 1
        } else {
            difCount += 1
        }
        if xCount == difCount {
            resultCount += 1
            xCount = 0
            difCount = 0
            x = nil
        }
    }
    return x != nil ? resultCount+1 : resultCount
}

 

#

1. 문자열 s로 반복문을 돌린다.

2. x가 nil이라면 문자 chr를 할당하고 xCount를 +1 한다.

3. x에 값이 할당되어 있을 때 부터는 x와 값을 비교하여 같다면 xCount를 다르다면 difCount를 1씩 늘려준다.

4. 카운트를 늘린 후 xCount와 difCount의 값이 같다면 resultCount를 +1 해주고 x와 count들을 초기화하여 다시 시작한다.

5. 마지막 문자가 1개 남았을 때는 최종 count에 +1을 하여 반환한다.


배운 기술