티스토리 뷰
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/120895
문제 사진
내 풀이
import Foundation
func solution(_ my_string:String, _ num1:Int, _ num2:Int) -> String {
var resultString: [Character] = Array(my_string)
var tempArr: [Character] = []
tempArr.append(Array(my_string)[num1])
tempArr.append(Array(my_string)[num2])
resultString[num1] = tempArr.popLast()!
resultString[num2] = tempArr.popLast()!
return String(resultString)
}
- my_string도 파라미터라 불변값이니 변수에 할당해주기
- 빈 배열에 num1, num2 인덱스의 요소 넣기
- pop으로 my_string 결과값 변경
문제에선 파라미터 num1, num2의 값이 항상 있을거라는 제약조건이 있어 force unwrapping(!) 을 사용했지만 좋아보이진 않는다.
다른사람의 풀이
joined()
func solution(_ my_string:String, _ num1:Int, _ num2:Int) -> String {
var arr = my_string.map{String($0)}
let temp = arr[num1]
arr[num1] = arr[num2]
arr[num2] = temp
return arr.joined()
}
굳이 append, pop을 하지 않아도 arr변수에 index만 바꿔줌으로써 결과를 낼 수 있다.
swapAt(_:_:)
func solution(_ my_string:String, _ num1:Int, _ num2:Int) -> String {
var arr = Array(my_string)
arr.swapAt(num1, num2)
return String(arr)
}
solution("hello", 1, 2)
// "hlelo"
배운것
1. String.Element == Charactor
2. joined()
연결된 배열의 배열 요소를 반환합니다.
예제
// 1
var testArr = ["a", "b", "c", "q"]
var 합체 = testArr.joined()
print(합체)
// abcq
// 2 (joined(separator: ", ") 요소마다 , 간격을 두고 [String] -> String타입으로 합침
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let list = cast.joined(separator: ", ")
print(list)
// Vivien, Marlon, Kim, Karl
// 3
let ranges = [0..<3, 8..<10, 15..<17]
for range in ranges {
print(range)
}
// Prints "0..<3"
// Prints "8..<10"
// Prints "15..<17"
// joined()를 사용하여 각 range별 요소에 접근할 수 있습니다.
for index in ranges.joined() {
print(index, terminator: " ")
}
// Prints: "0 1 2 8 9 15 16"
3. swapAt(_:_:)
파라미터 i 와 j 의 순서를 바꾼다.
func solution(_ my_string:String, _ num1:Int, _ num2:Int) -> String {
var arr = Array(my_string)
arr.swapAt(num1, num2)
return String(arr)
}
solution("hello", 1, 2)
// "hlelo"
이게 최고의 방법인것 같다..
다다익메서드
728x90
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘] - 피자 나눠 먹기(2) (Programmers) (0) | 2022.10.27 |
---|---|
[Swift 알고리즘] - 369게임 (Programmers) (0) | 2022.10.26 |
[Swift 알고리즘] - 양꼬치 (Programmers) (0) | 2022.10.21 |
[Swift 알고리즘] - 음양 더하기 (Programmers) (0) | 2022.10.20 |
[Swift 알고리즘] - 약수의 개수와 덧셈 (Programmers) (0) | 2022.10.18 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift
- Swift joined
- Swift Leetcode
- CS 네트워크
- Swift 알고리즘
- swift property
- 원티드 프리온보딩
- Swift joined()
- removeLast()
- Swift init
- Combine: Asynchronous Programming with Swift
- Swift inout
- RTCCameraVideoCapturer
- Swift Error Handling
- RIBs tutorial
- Swift 프로퍼티
- Swift 프로그래머스
- 2023년 회고
- iOS error
- ios
- Swift ModernRIBs
- Swift RIBs
- swift programmers
- swift (programmers)
- Swift final
- swift reduce
- swift 고차함수
- Swift 내림차순
- Class
- swift protocol
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함