백준 1010번: 다리놓기 [c++]

gogowonji·2022년 3월 6일
0

알고리즘

목록 보기
1/7

백준 1010번: 다리놓기

//  main.cpp
//
//  Created by gogowonji on 2022/03/06.
//

#include <iostream>
using namespace std;

int main() {
    // insert code here...
    // 백준 1010번
    
    // 입력
    int test;
    int n,m;
    cin >> test;
    // long long (8bytes) : int형 연산에서 벗어나는 범위일 때 사용
    long long num = 1;
    
    for(int i = 0; i < test; i++){
        num = 1;
        cin >> n >> m;
        
        if(n > (m/2)){
            n = m-n;
        }
        for(int j = m; j > m-n; j--){
            num *= j;
        }
        for(int j = n; j > 0; j--){
            num /= j;
        }
        // 출력
        cout << num << endl;
    }
        
    
    
    
    return 0;
}

조합을 이용한 쉬운 문제였다.

시간 초과를 방지하기 위해서 if구문을 추가해주고

mCn = m(m-1)...(m-n) / n(n-1)...1
or
mC(m-n) = m(m-1)...(m-n) / (m-n)(m-n-1)...1

for문으로 계산해주고 출력해주면 끝!

오랜만에 문제를 풀었더니 감이 다 사라진 느낌이다.
열심히 다시 공부해야지...

profile
개발자를 할까 말까

0개의 댓글