티스토리 뷰

코딩테스트

Lv.0 swift 문자열 겹쳐쓰기

알롱도담쓰 2024. 3. 27. 04:04

문제 설명

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

 

제한 조건

my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

 

내 답안

func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
    var myString = my_string
    let startIndex = myString.index(myString.startIndex, offsetBy: s)
    let endIndex = myString.index(startIndex, offsetBy: overwrite_string.count)
    
    myString.replaceSubrange(startIndex..<endIndex, with: overwrite_string)
    
    return myString
}

접근 방법

  1. 교체할 부분의 시작 인덱스와 끝 인덱스를 구한다
  2. replaceSubrange를 써서 문자열을 교체한다

 

다른 풀이

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
}

 

인덱스 대신 prefix와 suffix를 써서 바꾸려고 하는 부분을 구할 수도 있다

 

알게 된 것

replaceSubrange(_:,with:) 

https://codingbackup.tistory.com/342

 

replaceSubrange(_:with:)

mutating func replaceSubrange( _ subrange: Range, with newElements: C ) where C : Collection, C.Element == Character 배열 및 문자열의 일부 요소를 다른 요소로 교체할 수 있다 subrange 의 길이와 with의 길이가 같을 필요는

codingbackup.tistory.com

 

'코딩테스트' 카테고리의 다른 글

Lv.0 swift 1로 만들기  (0) 2024.03.29
Lv.0 swift 수열과 구간 쿼리 3  (0) 2024.03.28
Lv.0 swift 분수의 덧셈  (0) 2024.03.27
Lv.0 swift 배열 만들기 5  (0) 2024.03.25
Lv.0 swift 날짜 비교하기  (0) 2024.03.25
최근에 올라온 글