
import Foundation
func solution(_ my_string:String, _ n:Int) -> String {
var answer : String = ""
var arr : [String] = []
var N : Int = 0
for string in my_string {
arr.append(String(string))
}
N = arr.count-1 - n
if N > 0 {
arr.removeSubrange(0...N)
answer = arr.joined()
} else {
answer = arr.joined()
}
return answer
}
이렇게 생각한 이유.
고민을 하다가 joined가 생각나서 해당 문자열을 배열로 전환하여 배열에서 인덱스의 범위 값을 제거하는 arr.removeSubrange(startindex … lastindex)를 통하여 제거를 한 뒤에, join을 써서 해결하였다.
하지만 3문제가 틀렸는데 알고보니 N 이 무조건 0보다 클때 이 코드는 작동하는 것이었고, 그러지 않을때를 생각하지 못했다.
그래서 if조건을 달아서 해결하였다.
다른 코드를 보니 심플한것도 많았고, 내가 배열을 만든것을 map이라는 고차함수로 풀어내었다.
이것까진 생각못했는데 다음번엔 적용해봐야겠다.
다른 코드
import Foundation
func solution(_ my_string:String, _ n:Int) -> String {
let index = my_string.index(my_string.endIndex, offsetBy: -n)
return String(my_string[index...])
}
//
import Foundation
func solution(_ my_string:String, _ n:Int) -> String {
return String(my_string.suffix(n))
}
//
import Foundation
func solution(_ my_string:String, _ n:Int) -> String {
let index = my_string.index(my_string.startIndex, offsetBy: my_string.count - n)
return String(my_string[index...])
}
import Foundation
func solution(_ my_string:String, _ n:Int) -> String {
let count = my_string.count - n
var myArray = Array(my_string).map{String($0)}
myArray.removeFirst(count)
return myArray.joined(separator : "")
}
PREVIOUS42. 부분 문자열 이어 붙여 문자열 만들기 (ing)
NEXT44. 접미사 배열