문제
내 정답 코드
import Foundation
func solution(_ s:String) -> [Int] {
var dic:[String:Int] = [:]
var result:[Int] = []
s.enumerated().map {
if dic[String($0.element)] == nil {
dic[String($0.element)] = $0.offset
result.append(-1)
} else {
let temp = $0.offset - dic[String($0.element)]!
result.append(temp)
dic[String($0.element)] = $0.offset
}
}
return result
}
#
1. 나는 dictionary를 사용하여 해당 문자열의 인덱스를 저장하여 문제를 해결하였다.
2. 먼저 enumerated를 사용하여 해당 문자의 인덱스를 가져올 수 있게 세팅한다.
3. 반복문을 돌며 해당 문자가 dic의 키에 있는지 확인하고 없으면 그 문자와 인덱스를 저장한다.
4. 없다는 것은 처음 저장한 것이기 때문에 result에 -1를 저장한다.
5. dic에 해당 문자가 있다면 그 문자의 인덱스를 가져오고, 현재 문자의 인덱스를 가져와 뺄셈을 통해 격차를 계산한다.
6. 격차를 result에 append한다.
배운 기술
'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글
[lv1] 추억 점수 (0) | 2024.06.12 |
---|---|
[lv1] 문자열 나누기 (0) | 2024.06.02 |
[lv1] 기사단원의 무기 (1) | 2024.06.02 |
[lv1] 크기가 작은 부분 문자열 (0) | 2024.06.02 |
[lv1] 카드 뭉치 (0) | 2024.05.29 |