티스토리 뷰
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/60057
💡 구현 아이디어
- 주어진 문자열을 1~문자열길이 만큼으로 각각 나눔
- 나누어진 문자열을 기반으로 압축 진행
- 최소 길이 반환
💻 코드
import Foundation
func solution(_ s:String) -> Int {
var result: Int = 1001
var str: [String] = Array(s).map { String($0) }
for len in 1...str.count {
var tempStr: String = ""
var cStr: [String] = convertStr(str, len)
var preStr: String = ""
var num: Int = 1
for value in cStr {
if preStr != value { // 이전 문자와 이번 문자가 다를 경우 - 문자열 저장
if num != 1 { tempStr += String(num) }
tempStr += preStr
num = 1
preStr = value
} else {
num += 1
}
}
if num != 1 { tempStr += String(num) }
tempStr += preStr
result = min(result, tempStr.count)
}
return result
}
func convertStr(_ str: [String], _ leng: Int) -> [String] {
var result: [String] = []
for (idx, c) in str.enumerated() {
if idx % leng == 0 { result.append("") }
result[idx / leng] += c
}
return result
}
❌ 틀린 이유 및 틀린 부분
⏳ 시간 복잡도
O(N^2) = 문자열의 길이 * (주어진문자열 길이 / 문자열길이) + 문자열의 길이 * 문자열의 길이
📌 풀이 또는 기억할 정보
'PS > 문제 풀이' 카테고리의 다른 글
| [프로그래머스/Swift] 140107번 - 점찍기 (0) | 2025.04.28 |
|---|---|
| [프로그래머스/Swift] 62048번 - 멀쩡한 사각형 (0) | 2025.04.27 |
| [프로그래머스/Swift] 134239번 - 우박수열 정적분 (0) | 2025.04.22 |
| [프로그래머스/Swift] 172927번 - 광물 캐기 (0) | 2025.04.22 |
| [프로그래머스/Swift] 12946번 - 하노이의 탑 (0) | 2025.04.16 |
