본문 바로가기

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

[lv1] 숫자 짝꿍

문제

 

내 정답 코드

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 값을 지정해준다.

'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글

[lv1] 로또의 최고 순위와 최저 순위  (0) 2024.09.02
[lv1] 평균 구하기  (0) 2024.09.02
[lv1] 실패율  (0) 2024.08.26
[lv1] 핸드폰 번호 가리기  (0) 2024.08.21
[lv1] x만큼 간격이 있는 n개의 숫자  (0) 2024.08.21