프로그래머스 (Swift)/lv 1

[lv1] 숫자 짝꿍

은더기 2024. 8. 30. 11:30

문제

 

내 정답 코드

import Foundation

func solution(_ X:String, _ Y:String) -> String {
    
    // [숫자 : Count]
    var xDict = [Character : Int]()
    var yDict = [Character : Int]()
    var sameNum: [Character] = []
    
    // 같은 문자이면 count를 +1
    for char in X {
        xDict[char, default: 0] += 1 // xDict에 key에 대한 value가 없을 때 default값 설정
    }
    for char in Y {
        yDict[char, default: 0] += 1
    }
    
    for (key, value) in xDict {
        if let yCount = yDict[key] {
            sameNum += Array(repeating: key, count: min(value, yCount))
        }
    }
    
    sameNum = sameNum.sorted(by: { $0 > $1 })
    
    if sameNum.isEmpty {
        return "-1"
    } else if sameNum.first == "0" {
        return "0"
    } else {
        return String(sameNum)
    }
}

 

#

1. xDict와 yDict 라는 딕셔너리를 생성한다.

2. X, Y의 문자열 숫자를 key 설정하고 count를 Int로 저장한다.

3. xDict로 반복문을 돌리며 같은 key에 대한 Count를 비교하여 더 작은 Count만큼 sameNum에 추가해준다.

4. 정렬을 한다.

5. 빈 배열일 때는 -1을, 0만 있을 때는 0을, 아닐 때는 문자열로 반환한다.


배운 기술

 

1. Dictionary - default:

key에 대한 value가 없을 때, default로 value 값을 지정해준다.