TIL: Swift 문자열 교체 문제 해결

jeongmuyamette·2024년 11월 22일

TIL

목록 보기
7/72
post-thumbnail

TIL: Swift 문자열 교체 문제 해결

📝 문제 개요

  • 문자열(my_string)의 특정 위치(s)부터 다른 문자열(overwrite_string)로 교체하는 문제
  • 교체할 길이는 overwrite_string의 길이만큼

🔑 핵심 개념

  1. Swift의 String.Index 활용

    • Swift에서는 문자열의 위치를 정수 인덱스로 직접 접근할 수 없음
    • index(_:offsetBy:) 메서드를 사용하여 String.Index를 얻어야 함
  2. 문자열 범위 지정

    • 시작 위치와 끝 위치를 이용해 범위 생성
    • 범위 표현: startIndex..<endIndex
  3. 문자열 교체 메서드

    • replacingCharacters(in:with:) 메서드 사용
    • 첫 번째 파라미터(in:): 교체할 범위
    • 두 번째 파라미터(with:): 교체할 새로운 문자열

💻 최종 코드

func solution(_ my_string: String, _ overwrite_string: String, _ s: Int) -> String {
    // 1. 교체를 시작할 위치의 인덱스를 구합니다.
    // startIndex로부터 s만큼 떨어진 위치의 String.Index를 얻습니다.
    let startIndex = my_string.index(my_string.startIndex, offsetBy: s)
    
    // 2. 교체가 끝날 위치의 인덱스를 구합니다.
    // startIndex로부터 교체할 문자열(overwrite_string)의 길이만큼 떨어진 위치입니다.
    let endIndex = my_string.index(startIndex, offsetBy: overwrite_string.count)
    
    // 3. 원본 문자열의 지정된 범위(startIndex..<endIndex)를
    // overwrite_string으로 교체한 새로운 문자열을 반환합니다.
    return my_string.replacingCharacters(in: startIndex..<endIndex, with: overwrite_string)
}

📌 주요 학습 포인트

  • Swift에서 문자열 인덱스 다루는 방법
  • 문자열 범위를 지정하는 방법
  • 문자열 교체 메서드의 올바른 사용법

🔍 또다른 방법

func solution(_ my_string: String, _ overwrite_string: String, _ s: Int) -> String {
    // 1. 입력 문자열을 배열로 변환하여 수정 가능하게 만듭니다
    var result = Array(my_string)
    
    // 2. overwrite_string의 길이를 구합니다
    let s2 = overwrite_string.count
    
    // 3. s위치부터 s2길이만큼 overwrite_string으로 교체합니다
    for i in 0..<s2 {
        result[s + i] = Array(overwrite_string)[i]
    }
    
    // 4. 최종 결과를 문자열로 변환하여 반환합니다
    return String(result)
}

0개의 댓글