문제는 n Combination m의 조합을 찾는 문제이고, n,m의 각각의 범위는 5~100, 5~100입니다.
2. 소스 코드 설명
1) 100 Comb 50의 값이 long long의 범위를 넘어가기 때문에 먼저 푸신 분들의 소스 코드를 참고하여 Biginteger를 구현하였습니다.
2) for문의 경우는 n*m번 반복되며, 파스칼의 삼각형을 구현하였습니다.
3) 시간 복잡도를 고려하여 m이 n/2보다 큰 경우 n-m으로 값을 바꾸어 계산하였습니다. ( nCm=nC(n-m) )
3. 해결하지 못 한 문제
- 소스 코드의 15번째 line에서 재귀를 이용하여 함수를 실행하려고 하였습니다. 하지만 메인 함수에서 출력되는 값은 원하는 값이 아니라 모두 '0'의 값을 얻게 되었습니다. (15번째 line에 printf("***\n");와 같은 문을 삽입하였는데, 정상 출력되는 것을 확인했습니다.)
4. 대안
- main함수에서 해당 조건문을 실행하여 문제를 해결하였습니다.
여기서 궁금한 점은 왜 15번째 line에서 해당 if문을 이용하면, 원하는 값이 출력되는 게 아니라 '0'을 출력하는지 궁금합니다.
dreamian 6년 전
문제를 풀다가 궁금한 점이 생겨 질문합니다!
1. 문제 설명
문제는 n Combination m의 조합을 찾는 문제이고, n,m의 각각의 범위는 5~100, 5~100입니다.
2. 소스 코드 설명
1) 100 Comb 50의 값이 long long의 범위를 넘어가기 때문에 먼저 푸신 분들의 소스 코드를 참고하여 Biginteger를 구현하였습니다.
2) for문의 경우는 n*m번 반복되며, 파스칼의 삼각형을 구현하였습니다.
3) 시간 복잡도를 고려하여 m이 n/2보다 큰 경우 n-m으로 값을 바꾸어 계산하였습니다. ( nCm=nC(n-m) )
3. 해결하지 못 한 문제
- 소스 코드의 15번째 line에서 재귀를 이용하여 함수를 실행하려고 하였습니다. 하지만 메인 함수에서 출력되는 값은 원하는 값이 아니라 모두 '0'의 값을 얻게 되었습니다. (15번째 line에 printf("***\n");와 같은 문을 삽입하였는데, 정상 출력되는 것을 확인했습니다.)
4. 대안
- main함수에서 해당 조건문을 실행하여 문제를 해결하였습니다.
여기서 궁금한 점은 왜 15번째 line에서 해당 if문을 이용하면, 원하는 값이 출력되는 게 아니라 '0'을 출력하는지 궁금합니다.
input 예)
10 8
정답)
45
출력된 값)
0
감사합니다!