문제
내 정답 코드
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 |