💬 문제
[코딩테스트 연습 - 숫자 짝꿍](https://school.programmers.co.kr/learn/courses/30/lessons/131128)
💬 Idea
풀이 방법- dict의 0번째 인덱스에 X에 포함된 key의 개수가 업데이트 될 수 있도록 한다. Y는 1번째 인덱스에.
- dict는 딕셔너리이므로 정렬되지 않는다는 특성이 있다. 따라서 딕셔너리의 key값을 정렬하여 해당 key값을 value값만큼 반복하여 result에 더한다.
- 이미 정렬된 문자열이 도출되었으므로 빈 문자열일 경우, 0이 여러번 반복되는 경우만 따로 처리해주어 최종 결과값을 도출한다.
풀이 방법- 0부터 9까지 for문을 돌리며 X 문자열, Y 문자열 각각에 포함된 0~9 숫자를 뽑고 해당 array들의 최솟값을 뽑아서 result에 append한다.
- ex) X = “1000”, Y = “21000”
0 → x = [”0”, “0”, “0”]
y = [”0”, “0”, “0”]
min.count = 3 이므로 result에 000이 더해진다.
1 → x = [”1”]
y = []
min.count = 0 이므로 result에 아무 값도 더해지지 않는다.
- 가장 큰 정수를 도출하기 위해 result 문자열을 내림차순으로 정렬한다.
💬 풀이
func solution(_ X:String, _ Y:String)->String{vardict:[String:[Int]]=["0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],]varresult:String=""foriin X {dict[String(i)]![0]+=1}foriin Y {dict[String(i)]![1]+=1}foriin dict.sorted(by:{ $0.key > $1.key }){
result +=String(repeating: i.key, count: i.value.sorted()[0])}
result = result ==""?"-1": result
return result.allSatisfy({ $0 =="0"})?"0": result
}💬 더 나은 방법?
func solution(_ X:String, _ Y:String)->String{varresult:String=""foriin0...9{letx=X.filter({String($0)==String(i)})lety=Y.filter({String($0)==String(i)})
result +=String(repeating:String(i), count:min(x, y).count)}
result = result.sorted(by:>).map({String($0 )}).joined()
result = result ==""?"-1": result
return result.allSatisfy({ $0 =="0"})?"0": result
}
💬 문제[코딩테스트 연습 - 숫자 짝꿍](https://school.programmers.co.kr/learn/courses/30/lessons/131128)
💬 Idea풀이 방법풀이 방법0 → x = [”0”, “0”, “0”]
y = [”0”, “0”, “0”]
1 → x = [”1”]
y = []
min.count = 0 이므로 result에 아무 값도 더해지지 않는다.
💬 풀이💬 더 나은 방법?