일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- C++
- 프로그래머스
- 파이썬
- 방송통신대학교 대학원 정보과학과
- 코딩테스트
- K8S
- Code Jam 2022
- 하늘과 바람과 별과 詩
- 방통대 대학원 정보과학과
- MySQL
- GitLab
- 하늘과 바람과 별과 시
- openebs
- secondlowestgrade
- swift
- ingress-nginx
- on-prem
- 해커랭크
- 2022
- nestedlists
- Code Jam
- 3D PRINTING
- Qualification Round
- hackerrank
- 정보과학과
- ESXi 업데이트
- Kubernetes
- LEVEL 2
- Python
Archives
- Today
- Total
공대생의 비망록
[프로그래머스][Lv. 2] 문자열 압축 Swift 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/60057
풀이는 추후에 차차 올리도록 하겠습니다...
2020 KAKAO BLIND RECRUITMENT 1차 코딩테스트에 나온 문제.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import Foundation
func solution(_ s:String) -> Int {
var bestResult: Int = s.count
for i in 1..<s.count / 2 + 1 {
var slices: [String] = [String]()
var lastIndex: Int = -1
for j in stride(from: 0, through: s.count - i, by: i) {
slices.append(String(s[s.index(s.startIndex, offsetBy: j)...s.index(s.startIndex, offsetBy: j + i - 1)]))
lastIndex = j + i
}
if s.count % i != 0 {
slices.append(String(s[s.index(s.startIndex, offsetBy: lastIndex)...s.index(before: s.endIndex)]))
}
var record: String = "", result: String = ""
var count: Int = 1
for slice in slices {
if record == slice {
count += 1
} else {
if !record.isEmpty {
result += count > 1 ? "\(count)\(record)" : "\(record)"
}
record = slice
count = 1
}
}
if !record.isEmpty {
result += count > 1 ? "\(count)\(record)" : "\(record)"
}
if bestResult > result.count {
bestResult = result.count
}
}
return bestResult
}
|
cs |
'Programming Language > Swift' 카테고리의 다른 글
[프로그래머스][Lv. 2] 행렬 테두리 회전하기 Swift 풀이 (0) | 2022.04.16 |
---|---|
[프로그래머스][Lv. 2] 오픈채팅방 Swift 풀이 (0) | 2022.04.09 |
[프로그래머스][Lv. 1] 다트 게임 Swift 풀이 (0) | 2022.04.07 |
[프로그래머스][Lv. 1] 비밀지도 Swift 풀이 (0) | 2022.04.07 |
[프로그래머스][Lv. 1] 최소직사각형 Swift 풀이 (0) | 2022.04.06 |
Comments