포스트

10. 문자열 겹쳐쓰기 (fin)

나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import Foundation

func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
    
    var answer : String = ""
    var arr : [String] = []
    var arr1 : [String] = []
    var n : Int = 0
    
    arr = my_string.map{String($0)}
    arr1 = overwrite_string.map{String($0)}
    
    n = arr1.count + s-1
    
    for i in s ... n {
        arr[i] = arr1[i-s]
    }
    
    answer = arr.joined()

    return answer
}

뒤로 미뤘던. 문자열에 index로 간단하게 접근을 해보려고 했으나 그게 되지 않아서 이것저것 찾아보게 되었다. index는 별도로 정리 하였음.


Retry 어떻게 풀어볼것인가?

  1. 정수 s 부터 overwrite_string.count 까지의 범위로 접근. 1-1. string자체를 slicing하여 가능한지 도전 -> 검색해보니 replacingOccurrences(of:with:)를 사용하여 간단하게 해결이 가능해보인다. 최근에 이런 메서드를 사용해서 푼 코드를 본것같은데 이번참에 한번 써봐야겠다.
    1
    2
    3
    
    let sampleStr = "12345"
    let newStr = sampleStr.replacingOccurrences(of: "2", with: "vv")
    print(newStr) // 1vv345
    

    -> 해당문제가 3번같은 예시일때 에러가 생겼다. ```swift import Foundation

func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {

1
2
3
4
5
6
7
8
9
10
11
12
var answer : String = ""
var o : String = ""

var start = my_string.index(my_string.startIndex, offsetBy:s) 
var end = my_string.index(my_string.startIndex, offsetBy:overwrite_string.count+s) 

o = my_string.substring(with: start..<end)


answer = my_string.replacingOccurrences(of:o, with: overwrite_string)

return answer

}

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
그게안될경우.
2. my_string과 overwrite_string을 배열로 바꾸어서 치환

결국 배열로 접근하여 문제를 풀었다.

---

다른코드
```swift
import Foundation

func solution(_ myString: String, _ overwriteString: String, _ s: Int) -> String {
    var myString = Array(myString)
    myString.replaceSubrange(s...(overwriteString.count+s-1), with: Array(overwriteString))
    return String(myString)
}
//
import Foundation

func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
    let a = my_string.prefix(s)
    let b = overwrite_string
    let c = my_string.suffix(my_string.count - overwrite_string.count - s)
    return a + b + c
}
//
import Foundation

func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
    return String(my_string.prefix(s))+overwrite_string+String(my_string.suffix(my_string.count-overwrite_string.count-s))
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.