Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DirectX12
- boj 5567
- 티스토리챌린지
- c++ 5567
- depth-stencil
- 오블완
- pcce 기출문제 풀이
- texture mapping
- directx 그래픽스
- 수식 복원하기
- root signature
- 잔디 기부
- python 고대 문명 유적 탐사
- DirectX
- 렌더링 파이프
- c++ 1991
- 코드트리 고대 문명 유적 탐사
- pcce 기출문제 10번 지폐 접기 풀이
- 백준 5567
- PCCE
- pcce 기출문제 10번 공원 풀이
- pccp 기출문제 풀이
- 프로그래밍공부
- 고대 문명 유적 탐사
- pcce 기출문제 10번 공원
- constant buffre
- 잔디 기부 캠페인
- boj 1991
- gemmasprint
- pcce 기출문제 9번 지폐 접기
Archives
- Today
- Total
오구의코딩모험
[Python] 1010번 : 다리 놓기 본문
반응형
문제 설명 3줄 요약
1. 강 주변에는 다리를 놓기에 적합한 '사이트'가 있다.
2. 재원이는 강 서쪽 사이트(N개)와 동쪽 사이트(M개)를 이어주는 다리를 놓는다. (N <= M)
3. 한 사이트 당 한 개의 다리만 연결, 최대한 많은 다리(N개)를 지을 수 있는 경우의 수 구하자!
※ 다리끼리 겹치기 불가
문제를 읽자마자 든 생각,
수학 시간에 자주 들었던 문제!
N개의 빨간 공과 M개의 파란 공을 잇는 경우의 수는?
바로 조합(Combination) 문제
순열과 조합의 차이는 '순서의 고려' 이지만
다리를 놓는 경우에서 순서는 상관이 없다.
여기서 느낌표(!) 는 팩토리얼,
따라서 팩토리얼만 함수로 구현해주고
조합 계산을 해주면
# T = 테스트 케이스 수 입력 받기
T = int(input())
# 다리를 놓을 수 있는 경우의 수는 순열의 조합(combination)
# 재귀 함수로 팩토리얼 함수 구현
def combination(number):
if number > 1:
return number * combination(number-1)
return 1
if __name__ == '__main__':
for count in range(T):
# N개의 사이트, M개의 사이트 입력
N,M = map(int, input().split())
# 순열 조합
answer = combination(M)/(combination(N)*combination(M-N))
print(int(answer))
끝!
반응형
'프로그래밍 공부 > 백준 알고리즘' 카테고리의 다른 글
[Python] 1003번 : 피보나치 함수 (0) | 2023.02.12 |
---|---|
[Python] 1002번 : 터렛 (0) | 2022.08.08 |
[Python] 1018번 : 체스판 다시 칠하기 (0) | 2022.08.07 |
[Python] 1015번 : 수열 정렬 (0) | 2022.08.06 |
[Python] 1059번 : 좋은 구간 (0) | 2022.08.05 |
Comments