백준 - 조약돌 꺼내기 (13251)

Seoyoung Lee·2023년 3월 3일
0

알고리즘

목록 보기
76/104
post-thumbnail
let M = Int(readLine()!)!
let stones = readLine()!.split(separator: " ").map { Int(String($0))! }
let N = Double(stones.reduce(0, +))
let K = Int(readLine()!)!
var answer = 0.0

for stone in stones {
    if stone < K {
        continue
    }
    var probability = 1.0
    var stoneCount = Double(stone)
    var allCount = N
    for _ in 0..<K {
        probability *= stoneCount / allCount
        stoneCount -= 1
        allCount -= 1
    }
    answer += probability
}

print(answer)

각 조약돌의 색깔마다 K번 뽑을 동안 같은 색이 나올 확률을 구하고 이 확률들을 다 더해주면 정답을 구할 수 있다.

또는 각 색깔별로 조약돌을 K개 뽑는 경우의 수를 구한 후 전체 돌에서 N개를 뽑는 경우의 수로 나눠도 답을 구할 수 있다.

profile
나의 내일은 파래 🐳

0개의 댓글