-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
🙋🏼 문제
💡 풀이
우선적으로 두 String을 Array로 만들어서 같은 것만큼 새 Array에 넣어줄 수 있도록 전략을 짰다.
coding_test_practice/coding_test_practice/240628_131128.swift
Lines 36 to 47 in d199578
| if arr.isEmpty { | |
| return "-1" | |
| } | |
| if arr.allSatisfy { $0 == "0" } { | |
| return "0" | |
| } | |
| arr.sort(by: >) | |
| let answer = arr.joined(separator: "") | |
| return answer |
위처럼 아무것도 없을 땐 -1이 출력되도록, "0"만 남아있다면 (ex. ["0", "0", "0"]) 0만 출력되도록 하였다.
arr를 큰 수부터 정렬하고, 하나의 String으로 합쳐주어 해당 값을 결과로 반환하였다.
근데 이제 arr에 넣는 과정이 어려웠다..
coding_test_practice/coding_test_practice/240628_131128.swift
Lines 12 to 14 in d199578
| var xString = X.map { $0 } | |
| var yString = Y.map { $0 } | |
| var arr: [String] = [] |
xString와 yString를 map을 이용해서 [Character] 형태로 정리해주었고,
원래는 하나씩 검사해서 arr에 넣으려고 했는데, 도저히 방법을 찾을 수 없어서 array를 dictionary 형태로 바꿔주어 숫자가 몇번씩 등장했는지 카운트 하도록 하였다.
coding_test_practice/coding_test_practice/240628_131128.swift
Lines 16 to 25 in d199578
| var xCount = [Character : Int]() | |
| var yCount = [Character : Int]() | |
| for item in xString { | |
| xCount[item, default: 0] += 1 | |
| } | |
| for item in yString { | |
| yCount[item, default: 0] += 1 | |
| } |
위처럼 ["0": 3, "1": 2, ... ] 형태의 dictionary를 만들었다.
coding_test_practice/coding_test_practice/240628_131128.swift
Lines 27 to 34 in d199578
| for (key, xValue) in xCount { | |
| if let yValue = yCount[key] { | |
| let commonCount = min(xValue, yValue) | |
| for _ in 0..<commonCount { | |
| arr.append(String(key)) | |
| } | |
| } | |
| } |
xCount와 yCount를 비교하여 둘 중 적은 수만큼 key 값을 arr에 추가해주었다.
진짜 코드가 너무 뚱뚱해져서 아쉬운 문제...