문제
내 정답 코드
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
let startIndex = my_string.startIndex
let endIndex = my_string.endIndex
var result = my_string
for query in queries {
let (s, e) = (query[0], query[1])
let prefix = result.prefix(upTo: result.index(startIndex, offsetBy: s))
let suffix = result.suffix(from: result.index(startIndex, offsetBy: e+1))
var middle = result[result.index(startIndex, offsetBy: s)..<result.index(startIndex, offsetBy: e+1)]
var middle2 = ""
for i in (0..<middle.count).reversed() {
middle2 += String(middle[middle.index(middle.startIndex, offsetBy: i)])
}
result = String(prefix) + String(middle2) + String(suffix)
}
return result
}
#
1. String index를 활용해서 요상한 방법으로 해결했는데..
2. var my_string = my_string.map { String($0) } 이 코드를 통해 문자열의 인덱스에 쉽게 접근할 수 있다는 것을 알았다. (이걸 왜 이제 알았지..)
Map함수를 통해 my_string의 문자들을 새로운 문자열 배열에 담음으로써 정수로 접근할 수 있는 것이다.
따라서 그 방법을 적용하여 빠르게 코드를 다시 짜보았다.
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
var my_string = my_string.map { String($0) }
for query in queries {
let (s, e) = (query[0], query[1])
my_string[s...e].reverse()
}
return my_string.joined()
}
1. 필요한 s, e범위를 뒤집어주고
2. 문자열 배열인 my_string을 joined해주면 간단하게 해결할 수 있다.
배운 기술
'프로그래머스 (Swift) > 기초' 카테고리의 다른 글
[Day9-2] 부분 문자열 이어 붙여 문자열 만들기 (0) | 2024.03.02 |
---|---|
[Day9-1] 배열 만들기 5 (0) | 2024.02.28 |
[Day8-4] 9로 나눈 나머지 (0) | 2024.02.24 |
[Day8-3] 글자 이어 붙여 문자열 만들기 (1) | 2024.02.24 |
[Day8-2] 주사위 게임3 (1) | 2024.02.24 |