본문 바로가기

프로그래머스 (Swift)/lv 1

[lv1] 가장 가까운 같은 글자

문제

 

내 정답 코드

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