티스토리 뷰

문제: 구슬을 나누는 경우의 수


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이


import Foundation

func solution(_ balls:Int, _ share:Int) -> Int {
    if (balls == share ){
        return 1
    }
    
    let answer = fac(balls) / fac(balls - share) / fac(share)
    return Int(NSDecimalNumber(decimal: answer))
}

func fac(_ n: Int) -> Decimal{
    var mu: Decimal = Decimal(1)
    for i in 1...n {
        mu *= Decimal(i)
    }
    return mu
}

 

위 알고리즘대로 그냥 Int로 풀면 이문제는 풀리지 않는데요,

그 이유는 30 팩토리얼이 Int가 표현할 수 있는 한계를 넘기 때문입니다.

그래서 더 큰 값을 표현할 수 있는 Decimal을 통해 풀었습니다. (UInt64도 안됩니다.)

 

 

머쓱이 스탬프 꼭 갖고싶습니다. 👍

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함