최근에 프로그래머스 코딩 기초 트레이닝 문제들을(하루 목표치 만큼) 풀어보며 Swift 문법을 공부하고 있습니다.
오늘부터 해결한 문제 중에 인상깊었던 문제를 하나씩 가져와서 블로그에 작성하며 공부하는 시간을 가져보려합니다.
오늘 인상깊었던 문제 : 문자열 겹쳐쓰기
문자열 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의 길이
my_string | overwrite_string | s | result |
---|---|---|---|
"He11oWor1d" | "lloWorl" | 2 | "HelloWorld" |
"Program29b8UYP" | "merS123" | 7 | "ProgrammerS123" |
import Foundation
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
var start : String = my_string.substring(to:s)
let index : Int = overwrite_string.count + s
var end : String = my_string.substring(from:index)
return start + overwrite_string + end
}
swift에서 문자열을 접근 및 사용하는 것이 다른 언어보다 까다롭습니다.
index만 해도 Int
타입은 되지 않고 String.index
를 사용해야 합니다.
-> str1.startIndex, str1.endIndex 등을 사용한다.
-> index를 사용 시에는 String.index()사용해서 변환해줘야 한다.
.substring(from : n)
: n부터 끝까지의 문자열
.substring(to: n)
: 처음부터 n까지의 문자열
.prefix(n)
: 문자열 앞에서 n개의 문자열
.suffix(n)
: 문자열 뒤에서 n개의 문자열
String.index
를 사용하여 Index범위를 지정한 뒤에 추출 하는 방법도 있다.
let str1 = "123456789"
let range = str1.index(str1.startIndex, offsetBy : 3)
print(str1[...range]) // "1234"