본문 바로가기
코테/프로그래머스

[프로그래머스] 문자열압축 스위프트

by 리드맥 2022. 2. 6.
func solution(_ s:String) -> Int {

    var arr:[String] = []
    var str = ""
    var result:[Int] = []
    //문자열 길이 반부터 시작
    var len = s.count / 2

    var count = 0
    if s.count == 1 {
        return 1
    }else{
    //생각해보니까 reversed사용 안해도 됐음
    for i in (1...len).reversed(){
        
        //길이만큼 나눠주기
        for j in s {
            str = str + String(j)
            count = count + 1
		
        	
            if count == i {
                count = 0
                arr.append(str)
                str = ""

            }
        }
        
        ////마지막 나머지문자열 넣어주기
        if str.count != 0 {
            arr.append(str)
        }

		//마지막에 빈문자열 넣어줘야 for문에서 ####### if문이 실행됨
        arr.append("")
        str = ""
        count = 0

//        print(arr)
        
        var n = 1
        var se = 0
        var st = arr[0]
        for i in 0...arr.count - 2 {

            if arr[se] == arr[i + 1]{
                n = n + 1
                arr[i+1] = ""
                
            }else {
            //##################################3
                if n != 1{
                    arr[se] = String(n) + st
                }else {
                    
                }
                st = arr[i + 1]
                n = 1
                se = i + 1
            }
        }
        
        result.append(arr.joined().count)
        
        arr = []
    }

    result.sort(by: <)
//    print(result)

    return result.first!
}
}

.. 확실이 레벨 2문제가 어렵긴 하네요 2시간이나 걸렸습니다. 이렇게 늦게 풀면 코딩 테스트를 통과나 할 수 있을런지 모르겠네요

댓글