[프로그래머스 LV1] 숫자 짝꿍

Junyoung Park·2022년 12월 1일
0

코딩테스트

목록 보기
630/631
post-thumbnail

1. 문제 설명

숫자 짝꿍

2. 문제 분석

  • 풀이는 간단하다. 두 수에 공통적으로 기록된 정수 중 최솟값을 가져와서 정렬하면 된다.
  • 이전에 풀었던 방법은 filter 등 고차 함수로 풀었는데, 시간이 다소 걸리기 때문에 특정 케이스에서 시간 초과가 났다. 결국 IntString으로 타입 캐스킹을 하지 않고 풀었다.

3. 나의 풀이

import Foundation

func solution(_ X:String, _ Y:String) -> String {
    var leftDict = [Character: Int]()
    var rightDict = [Character: Int]()
    for number in X {
        let count = leftDict[number] ?? 0
        leftDict[number] = count + 1
    }
    for number in Y {
        let count = rightDict[number] ?? 0
        rightDict[number] = count + 1
    }
    var answer = ""
    for number in "9876543210" {
        let minCount = min(leftDict[number] ?? 0, rightDict[number] ?? 0)
        for _ in 0..<minCount {
            answer.append(number)
        }
    }
    
    if answer.isEmpty {
        return "-1"
    } else if answer.first == "0" {
        return "0"
    } else {
        return answer
    }
}
profile
JUST DO IT

0개의 댓글