ALGORITHM/Swift
[알고리즘] Swift -프로그래머스 연습문제 #142086(가장 가까운 같은 글자)
늘스토리 주인장
2023. 5. 24. 14:00
728x90
반응형
문제링크
분석
문자열 s 가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서 자신과 가장 가까운 곳에 있는 같은 글자가 어디있는지 찾고 싶다.
예를 들어 s = "banana" 일 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음으로 진행할 수 있다.
- b는 처음에 나왔기 때문에 자신의 앞에 같은 글자가 없다. 이는 -1로 표현한다.
- a는 처음에 나왔기 때문에 자신의 앞에 같은 글자가 없다. 이는 -1로 표현한다.
- n도 똑같이 -1로 표현한다.
- a는 자신보다 2칸 앞에 a가 있다. 이는 2로 표현한다.
- n은 자신보다 2칸 앞에 n이 있다. 이는 2로 표현한다.
- a는 자신보다 2칸, 4칸 앞에 a가 있다. 이 중 가까운 것은 2칸 앞이므로 2로 표현한다.
- 따라서 최종 결과는 [-1, -1, -1, 2, 2, 2]가 된다.
정의된 연산을 수행하는 함수를 만드는 문제이다.
풀이 과정
글자 하나 씩 배열에 포함되어있는 지 확인 한 후에 없으면 -1를 추가하고
있다면 마지막 인덱스를 확인하여 자신의 인덱스의 차이를 구하여 추가한다.
풀이
import Foundation
func solution(_ s:String) -> [Int] {
var result = [Int]()
let sArr = Array(s)
var arr = [Character]()
for ch in sArr {
if let last = arr.lastIndex(of: ch) {
result.append(arr.count - last)
} else {
result.append(-1)
}
arr.append(ch)
}
return result
}
결과
print(solution( "foobar" ))
728x90
반응형