포스트

11. 문자열 섞기 (fin)

나의 코드 before

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import Foundation

func solution(_ str1:String, _ str2:String) -> String {
    
    
    var answer : String = ""
    
    var string : String = ""
    
    string = String(str1[str1.startIndex]) + String(str2[str2.startIndex])
    
    for i in 0 ... str1.count-1 {
        answer += string
    }
    
    return answer
}

이렇게 생각한 이유.

각 문자열의 첫번째를 추출해서 반복문을 통해 더했다. 하지만 채점하니 대부분이 틀렸다.

반례가 있었다.

너무 단순하게 1글자가 반복된다고 생각을 해버렸다.

개선 한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import Foundation

func solution(_ str1:String, _ str2:String) -> String {
    
    
    var answer : String = ""
    var ansarr : [String] = []
    var arr : [String] = []
    var arr1 : [String] = []
    
    arr = str1.map{String($0)}
    arr1 = str2.map{String($0)}
    
    for i in arr.indices{
        ansarr.append(arr[i])
        ansarr.append(arr1[i])
    }
    
    answer = ansarr.joined()
    
    return answer
}

결국 배열로 접근하여 문제를 풀었다.

아마 이당시에는 배열로 전환하는 생각을 아예 못했던거같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Foundation

func solution(_ str1:String, _ str2:String) -> String {
    return zip(str1, str2).map { String($0) + String($1) }.joined()
}
//
import Foundation

func solution(_ str1:String, _ str2:String) -> String {
    var result: String = ""
    for (one, two) in zip(str1, str2) {
        result.append(one)
        result.append(two)
    }
    return result
}

zip으로 간단하게 한걸 볼수있었다. zip은 아예생각지도 못했다.

서술하지 않은 다른 코드들도 대부분 배열로 접근하여 풀었다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.