본문 바로가기

기타공부

코딩테스트 연습 2020 KAKAO BLIND RECRUITMENT 문자열 압축 Swift

 

 

func solution(_ s:String) -> Int {
    //s의 길이는 1 이상 1,000 이하입니다.
    //가장큰 아웃풋숫자인 1000을 디폴트로 줌
    var outputInt : Int = 1000
    //swift String 을 처리하기 복잡하기에 String     배열로 변경
    var stringArray : [String]  = s.map{ String($0) }
    
    //글자갯수제한
    if(s.count > 1000){
        return 0
    //1글자짜리 텍스트 따로처리
    }else if(s.count == 1){
        return 1
    }else{
        //나눌수 있는 최대 크기는 string의 크기의 절반 이다.
        for count in (1...stringArray.count / 2) {
            var stringCount : [String] = []
            //원하는 크기로 자르는 for문
            for index in stride(from: 0, through: stringArray.count, by: count) {
                var sliceString : String = ""
                for stringIndex in 0..<count{
                    if(index + stringIndex < stringArray.count){
                        sliceString += stringArray[index + stringIndex].lowercased()
                    }
                }
                //마지막에 잘라진 string 과 같다면 중복 숫자를 올려주고
                if(stringCount.last == sliceString ){
                    stringCount[stringCount.count - 2] = String(Int(stringCount[stringCount.count - 2])! + 1)
                //처음 나온거라면 1과 함께 잘라진 스트링을 추가
                }else{
                    stringCount.append("1")
                    stringCount.append(sliceString)
                }
            }
          
            var resultString : String = ""
            //1은 사용하지않을꺼고 혹시모를 공백을 제거
            for item in stringCount{
                if(item != "1" && item != ""){
                    resultString += item
                }
            }

              //이렇게나온 string의 갯수가 제일 작은것이 최종 결과
            if(resultString.count < outputInt){
                outputInt = resultString.count
            }
        }
        
        return outputInt
    }
    
}

 

 

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

 

 

코테를 따로 공부하지않습니다. 시간때우기용으로 풀고있습니다. 저보다 좋은 풀이가 훨씬 더 많다고 항상 생각합니다.