시간 초과 코드
import Foundation
func solution(_ s:String) -> [Int] {
var dic = [String:Int]()
var answer = [Int]()
for i in 0..<s.count{
if dic[String(Array(s)[i])] != nil {
answer.append(i - dic[String(Array(s)[i])]!)
dic[String(Array(s)[i])] = i
} else {
dic[String(Array(s)[i])] = i
answer.append(-1)
}
}
return answer
}
수정한 코드
import Foundation
func solution(_ s:String) -> [Int] {
var dic = [String:Int]()
var answer = [Int]()
for (a, i) in s.enumerated() {
if dic[String(i)] != nil {
answer.append(a - dic[String(i)]!)
dic[String(i)] = a
} else {
answer.append(-1)
dic[String(i)] = a
}
}
return answer
}
회고
- 둘다 푼 방식은 똑같았다 딕셔너리를 활용하여 처음 나온 알파벳과 그 위치를 저장하고 인덱스 빼기를 활용하여 답을 구하였다
- 처음 푼 코드는 저번에 공부한 enumerated()를 활용할 생각을 못하고 정말 단순하게 직접 인덱스와 모든걸 내가 직접 구현을 하였다
- 시간 초과가 나고 나서라도 생각이 나서 다행이다
- 더욱 더 열심히 해야겠다 뿌듯하다