본문 바로가기
Problem Solving

[Swift] 프로그래머스 가장 가까운 같은 글자(lv. 1)

by DuncanKim 2023. 2. 3.
728x90

[Swift] 프로그래머스 가장 가까운 같은 글자(lv. 1)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

현재 인덱스와 이전 인덱스를 잘 구분해서 계산하면 된다.

comeout 이라는 array에는 한 번이라도 등장했던 Character를 집어넣는다. 이것과 비교하여 index 차이를 answer에 집어넣거나, -1을 집어넣는다.

 

등장한 것과 등장하지 않은 것을 잘 구분하면 된다.

 

3. 코드

import Foundation

func solution(_ s:String) -> [Int] {
    var answer = [Int]()
    var comeout = [Character]()
    var k = 0
    for i in s {
        if !(comeout.contains(i)) {
            answer.append(-1)
        } else {
            answer.append(k - comeout.lastIndex(of: i)!)
        }
        comeout.append(i)
        k += 1
    }
    return answer
}
728x90

댓글