[Python | 11050] 이항계수
문제 푸는 이유
진짜 오랜만에 글쓴다😥 12월 중순까지 프로젝트 3개, 졸업논문 남았지만 뭔가 오늘은 폭풍의 눈같은 상황인 것 같당. 내일 되면 발표 리허설, 프로젝트 미팅 2개 있는데ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 난 왜 마음이 편안한거지 그래서 편안한김에 오랜만에 알고리즘 문제 풀어보려고 한다. 내년 3월까지 solved.ac class 문제 다 풀고 싶당
문제 내용
두 수가 주어졌을 때 이항계수를 구하는 문제이다.
이항계수란 전체 n개의 항중 k개를 고르는 경우의 수를 의미한다.
이항계수 식만 알면 쉽게 구현할 수 있다.
💔 try1. failed!
나레기 이항계수 어케구하는지 모름,,,
# 111050: 이항계수 구하기
n, k = map(int, input().split(" "))
#bino = n * (n-1) * ... (n-k+1)
result = 1
for i in range(1, k+1):
result *= n
n -= 1
print(result)
이항계수 식을 찾아보고 다시 도전!!
❤ try2 solved!
# 111050: 이항계수 구하기
n, k = map(int, input().split(" "))
#bino = n * (n-1) * ... (n-k+1)/k!
result = 1
for i in range(1, k+1):
result *= n
result /= i
n -= 1
print(int(result))
44ms 가 걸렸다. 다른 사람들 코드를 찾아보았다.
오... 재귀 함수를 사용해서 푸는 방법도 있다.
# 11050: 이항계수 재귀함수
def factorial(n):
if n == 0:
return 1
return factorial(n-1) * n
n, k = map(int, input().split())
print(factorial(n)//(factorial(n-k)*factorial(k)))
근데 코드 길이랑 런타임은 비슷하다
그래도 함수 써서 코드가 좀 간결해진 게 장점인 거 같다.
결론
구현이 어렵지는 않았다.
문제는 수학이었다.
수학 공부를 해야겠다. 특히 확통.
'프로그래밍 > BOJ_Python 목표는 Diamond' 카테고리의 다른 글
[Python | 4153] 직각삼각형 (1) | 2023.11.28 |
---|---|
[1181 | python] 단어 정렬 (0) | 2023.08.01 |
[1259 | Python] 팰린드롬수 (0) | 2023.07.25 |
[2566 | Python] 최댓값 (0) | 2023.07.15 |
[2475, 2920, 10172 | python] 검증수, 음계, 개 (0) | 2023.07.13 |