728x90
https://school.programmers.co.kr/learn/courses/30/lessons/155652
새로운 Lv1 문제가 나왔다. 이런 건 다 풀어줘야지~~
문자열 유형이었는데, 알파벳을 배열(alph)에 넣고 진행해 줬다.
문자열 배열 s를 순회하면서 시작위치를 idx에 넣어줬는데 여기서 UnicodeScalar를 사용해서 "a"를 기준으로 상대적인 위치값을 구했다.
그리고 문제를 잘 읽어보면 skip에 포함된 알파벳을 무시하고 넘어가야 되기 때문에 if 조건문을 달아줬다.
skip에 포함되지 않으면 cnt + 1
while 반복문을 진행하다가 만약 index 개수만큼 알파벳을 넘겼다면 문자열의 알파벳을 index 만큼 뒤로 간(skip을 제외한) 그 알파벳 값으로 갱신하고 끝내준다.
import Foundation
func solution(_ s:String, _ skip:String, _ index:Int) -> String {
var s = s.map{ String($0) }
let alph = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
for i in 0..<s.count {
var cnt = 0
var idx = Int(UnicodeScalar(s[i])!.value) - Int(UnicodeScalar("a").value) //시작 위치
while true {
idx = (idx + 1) % 26 //다음 위치
if !skip.contains(alph[idx]) { //다음 위치의 알파벳이 skip에 없다면
cnt += 1 //카운팅
}
if cnt == index {
s[i] = alph[idx]
break
}
}
}
return s.joined()
}
다른 사람의 코드를 보니, UnicodeScalar를 사용하지 않고 알파벳 배열을 사용해서 firstIndex로 idx 값을 구한 것을 보았다.
다음엔 나도 이렇게 해봐야지!
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Swift] 택배 배달과 수거하기 (0) | 2023.03.25 |
---|---|
[프로그래머스/Swift] 이모티콘 할인 행사 (2023 Kakao Blind) (0) | 2023.03.24 |
[프로그래머스/Swift] k진수에서 소수 개수 구하기 (0) | 2023.01.15 |
[프로그래머스/Swift] 점프와 순간 이동 (0) | 2023.01.15 |
[프로그래머스/Swift] 배달 (0) | 2023.01.11 |