포스트

43. 문자열 뒤의 n글자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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이라는 고차함수로 풀어내었다.

이것까진 생각못했는데 다음번엔 적용해봐야겠다.

다른 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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 : "")
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.