[프로그래머스 / Python] 구슬을 나누는 경우의 수

Kun-Woo Kim·2024년 12월 27일

알고리즘 공부

목록 보기
2/24
post-thumbnail

문제 출처

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라는 함수가 있더라고요. 이 함수를 사용하니, 한 줄 코드로 간단하게 문제를 해결할 수 있었습니다. 이게 바로 프로그래밍의 매력인 것 같아요. 이미 만들어진 도구를 활용해서 문제를 풀면, 훨씬 빠르고 쉽게 해결할 수 있거든요.

코딩을 막 시작한 친구들에게 하고 싶은 말은, "함수를 잘 알고 있으면 정말 큰 도움이 된다"는 거예요. 라이브러리를 잘 활용하면, 복잡한 문제도 손쉽게 풀 수 있으니까요. 프로그래밍 공부를 하면서 다양한 함수와 라이브러리를 미리 알아두는 것도 좋은 학습 방법 중 하나랍니다. 그리고 무엇보다도, 이런 실용적인 도구들을 사용해 보면서 점점 코딩에 자신감을 가지게 될 거예요!

profile
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, Next.js 14, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.

0개의 댓글