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 |
Tags
- 비밀 코드 해독
- 색종이와가위
- boj 22942
- boj 20207
- lock based stack
- lock free stack
- DirectX
- pcce 기출문제 풀이
- render target
- tessellation
- 프로그래밍공부
- 데이터 체커
- c++
- boj 11053
- boj 6443
- boj 15724
- boj 1958
- boj 1074
- 지게차와 크레인
- PCCE
- lock based queue
- pccp 기출문제 풀이
- 브루트포스
- LCS
- 2025 프로그래머스 코딩챌린지 1차예선
- boj 21921
- 홀짝트리
- orthographic projection
- DirectX12
- dp
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번 : 수열 정렬 (1) | 2022.08.06 |
[Python] 1059번 : 좋은 구간 (0) | 2022.08.05 |
Comments