
https://school.programmers.co.kr/learn/courses/30/lessons/120840
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
balls개 중에서 share개를 선택하는 조합의 수를 계산하는 문제입니다. 이는 조합 공식 (\binom{n}{k} = \frac{n!}{k!(n-k)!})을 사용하여 해결할 수 있습니다.math 모듈에는 조합을 계산하는 comb 함수가 포함되어 있어, 이를 사용하면 간단하게 조합의 수를 구할 수 있습니다.def solution(balls, share):
# 분자를 계산하기 위한 변수
numer = 1
# 분모를 계산하기 위한 변수
denom = 1
# share+1부터 balls까지의 수를 곱함
for i in range(share + 1 , balls + 1):
numer *= i
# 1부터 balls-share까지의 수를 곱함
for i in range(1, balls - share + 1):
denom *= i
# 분자를 분모로 나눠 결과 반환
return numer / denom
import math
def solution(balls, share):
return math.comb(balls, share)
이번 프로젝트를 통해 구슬 나누기 문제를 해결하면서, 수학 시간에 배웠던 조합의 개념을 실제로 코딩으로 구현해보는 재미있는 경험을 할 수 있었어요. 처음엔 분자와 분모를 일일이 계산하는 방법을 썼는데, 이게 생각보다 까다로웠죠.
그런데 파이썬에는 이런 계산을 도와주는 math.comb라는 함수가 있더라고요. 이 함수를 사용하니, 한 줄 코드로 간단하게 문제를 해결할 수 있었습니다. 이게 바로 프로그래밍의 매력인 것 같아요. 이미 만들어진 도구를 활용해서 문제를 풀면, 훨씬 빠르고 쉽게 해결할 수 있거든요.
코딩을 막 시작한 친구들에게 하고 싶은 말은, "함수를 잘 알고 있으면 정말 큰 도움이 된다"는 거예요. 라이브러리를 잘 활용하면, 복잡한 문제도 손쉽게 풀 수 있으니까요. 프로그래밍 공부를 하면서 다양한 함수와 라이브러리를 미리 알아두는 것도 좋은 학습 방법 중 하나랍니다. 그리고 무엇보다도, 이런 실용적인 도구들을 사용해 보면서 점점 코딩에 자신감을 가지게 될 거예요!