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
코테를 따로 공부하지않습니다. 시간때우기용으로 풀고있습니다. 저보다 좋은 풀이가 훨씬 더 많다고 항상 생각합니다.
'기타공부' 카테고리의 다른 글
코딩테스트 연습2020 KAKAO BLIND RECRUITMENT괄호 변환 Swift (0) | 2021.12.01 |
---|---|
코딩테스트 - 해시 - 위장 Swift (0) | 2021.11.30 |
2018 KAKAO BLIND RECRUITMENT 파일명 정렬 Swift (0) | 2021.11.30 |