Algorithm

Baekjoon 백준 알고리즘 - 다리 놓기 ( 1010 )

jssvs 2022. 4. 17. 15:41
반응형

1. 문제 소개

  • 수학 유형 문제에 해당한다.

2. 코드 


def set_test_case():
    T = int(input())
    CASE = []
    for i in range (0,T):
        line = input().split(" ")  # 입력 문자열을 공백구분자로 분리 
        line = [int(x) for x in line]  # 연산을 위해 str -> int 형 변한
        CASE.append(line)  # 케이스들을 새로운 list 에 담음

    return CASE
        
# factorial 을 재귀로 간단히 구현
def factorial(n):
    if n <=1:
        return 1
    return n * factorial(n-1)


def solution():
    case = set_test_case() # 입력 케이스 처리 
    for i in case :
        r,n = i # 강의 서쪽은 r, 동쪽은 n 에 대입
        p = factorial(n-r) * factorial(r)  # 조합의 구한 분모 값 계산
        c = factorial(n)  # 조합의 분자 값 계산
        print(c//p) # 정답 출력 

solution()

 

3. 코멘트

  • 아래 조합 공식을 이용하여 문제를 풀면 쉽다.

  • 너무 오랜만에 포스팅을 하는 것 같다. 요즘 회사 업무량이 많고, 주말에 여유가 없어 취미로 시작한 알고리즘 스터디도 좀처럼 참여가 어렵다. 그래도 꾸준히 해야겠지. +_+..
반응형