Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- IOS
- Autolayout
- uikit
- tableView
- Segue
- replacesubrange()
- 싱글톤
- suffix()
- 프로그래머스
- 알고리즘
- zip()
- swift
- 라이징캠프
- xib
- 대문자소문자
- joined()
- String()
- 코드업 파이썬 기초 100제
- alamofire
- 코딩테스트
- MVC
- Info.plist
- GIT
- github
- uisearchbar
- components()
- reduce()
- prefix()
- API
- 클론코딩
Archives
- Today
- Total
Daeng iOS
[프로그래머스 코테 기초 Swift] #2-5 문자열 겹쳐쓰기 본문
프로그래머스 코딩 기초 트레이닝의 Day2은 "출력, 연산"에 관한 문제다
🗒️ 문제

✏️ 내 풀이
import Foundation
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
let myStrArr = Array(my_string)
let overwriteArr = Array(overwrite_string)
var result: [Character] = []
var resultStr = ""
for i in 0..<s {
result.append(myStrArr[i])
}
for i in 0..<overwriteArr.count {
result.append(overwriteArr[i])
}
for i in (s+overwriteArr.count)..<myStrArr.count {
result.append(myStrArr[i])
}
for i in result {
resultStr += String(i)
}
return resultStr
}
어케 꾸역꾸역 풀긴 했지만 굉장히 복잡시럽게 풀어낸..
중간에 포기하고싶었지만 그래도 포기하지 않고 풀어냈다는 것에 칭찬을 합니다..
풀이를 설명하자면,
먼저 주어진 문자열들을 인덱스로 접근하기위해서 배열로 변환해주었다
그리고 Character을 요소로하는 빈 배열을 만들어놓고 필요한 것들을 넣어줬다
1) s 전까지는 처음 주어진 myStrArr에서 가져와서 붙인다
2) overwriteArr을 전부 붙인다
3) myStrArr에서 (s + overwriteArrr의 개수) 만큼의 위치부터 끝까지를 붙여준다
위 세가지를 마친 후에 완성된 배열의 요소 하나하나를 String으로 변환해줘서
미리 만들어둔 빈 String에 붙여준 것..
🔍 다른 풀이 및 공부
1)
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)
}
2)
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
}
3)
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
let startIdx = my_string.index(my_string.startIndex, offsetBy: 0)
let endIdx = my_string.index(my_string.endIndex, offsetBy: 0)
let newStartIdx = my_string.index(my_string.startIndex, offsetBy: s)
let newEndIdx = my_string.index(my_string.startIndex, offsetBy: s + overwrite_string.count)
return "\(my_string[startIdx..<newStartIdx])\(overwrite_string)\(my_string[newEndIdx..<endIdx])"
}
1번 방법)
replaceSubrange를 사용하여 문자열을 대체한다. (replaceSubrange()정리글)
2번 방법)
prefix 로 완성돼야하는 문자열의 앞 부분에 필요한 문자열을 떼오고, (prefix() 정리글)
suffix 로 뒷 부분에 필요한 문자열을 떼와서 이어붙인다. (suffix() 정리글)
3번 방법)
바꿔야하는 부분의 인덱스 자체를 저장해놓고 문자열에서 해당 인덱스에 해당하는 문자열끼리 이어 붙인다.
.startIndex .endIndex를 구할 수 있다
* prefix / suffix 에 대해 설명을 잘 해두신 zedd님 블로그
'알고리즘 & 코딩테스트 > 프로프래머스' 카테고리의 다른 글
[프로그래머스 코테 기초 Swift] #3-2 문자 리스트를 문자열로 변환하기 (0) | 2024.03.13 |
---|---|
[프로그래머스 코테 기초 Swift] #3-1 문자열 섞기 (0) | 2024.03.11 |
[프로그래머스 코테 기초 Swift] #2-4 홀짝 구분하기 (0) | 2024.03.05 |
[프로그래머스 코테 기초 Swift] #2-3 문자열 돌리기 (0) | 2024.02.28 |
[프로그래머스 코테 기초 Swift] #2-2 문자열 붙여서 출력하기 (1) | 2024.02.28 |