본문 바로가기
문제 풀이/백준(BOJ)

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

by 희조당 2021. 7. 19.
728x90

https://www.acmicpc.net/problem/1010

 

1010번: 다리 놓기

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

www.acmicpc.net


 문제 풀이

간단한 이항정리 문제이다.

이항 정리만 이해하고 있으면 쉽게 풀 수 있다.

 함수 Solution

이항 정리를 구현한 함수이다! 값의 범위가 크므로 long long으로 선언해준다.

 느낀 점

솔직히 처음에는 당황해서 생각해내는데 오래 걸렸다. 구글링을 통해서 참고를 해보니 동적 계획법으로 푸는 분들이 많았는데 DP로 풀라는 의도가 아닌 것 같아서 간단하게 풀어보았다.

 코드

#include <iostream>

using namespace std;

int t, n, m;

long long solution(int n, int m) {
	long long ans = 1;
	int r = 1;
	for (int i = m; i > m - n;i--) {
		ans *= i;
		ans /= r++;
	}
	return ans;
}

int main() {
	cin >> t;
	for (int i = 0; i < t; i++) {
		cin >> n >> m;
		cout << solution(n, m) << "\n";
	}
}

댓글