[프로그래머스] 가장 가까운 같은 문자 - Swift

이창형·2023년 2월 27일
0

시간 초과 코드

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()를 활용할 생각을 못하고 정말 단순하게 직접 인덱스와 모든걸 내가 직접 구현을 하였다
  • 시간 초과가 나고 나서라도 생각이 나서 다행이다
  • 더욱 더 열심히 해야겠다 뿌듯하다
profile
iOS Developer

0개의 댓글