728x90
https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
풀이)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main_BJ_1010_다리놓기 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringTokenizer st;
for(int tc=0; tc<t; tc++){
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
BigInteger[] arr = new BigInteger[31];
arr[1] = BigInteger.ONE;
for(int i=2; i<=30; i++){
arr[i] = arr[i-1].multiply(BigInteger.valueOf(i));
}
if(n==m)
System.out.println(1);
else
System.out.println(arr[m].divide(arr[n].multiply(arr[m-n])));
}
}
}
원래는 메모이제이션으로 조합 경우의 수를 저장하면 되는데,,,
이 문제는 간단하기 때문에 조합 공식(n! / m!(n-m)! 공식을 단순히 활용했다.
따라서,,, 팩토리얼 값만 bigInteger를 사용해서 저장해줘도....
정말 간단하게 해결할 수 있다..ㅎㅎ 야매같지만...ㅎ
https://st-lab.tistory.com/194
[백준] 1010번 : 다리 놓기 - JAVA [자바]
www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 <
st-lab.tistory.com
메모이제이션 참고 블로그!!
728x90
'코테 > 백준' 카테고리의 다른 글
백준 15649 N과 M(1) (JAVA) (1) | 2023.05.16 |
---|---|
백준 1427 소트인사이드(JAVA) (0) | 2023.05.09 |
백준 14888 연산자 끼워넣기(JAVA) (0) | 2023.05.05 |
백준 2156 포도주 시식(JAVA) (4) | 2023.05.03 |
백준 1018 체스판 다시 칠하기(JAVA) (0) | 2023.04.30 |