프로그래머스 입문 day9
(3/4) 구슬을 나누는 경우의 수
2026-07-29
1. 문제
조합 공식을 이용해 경우의 수 구하기
2. 처음 접근
주어진 경우의 수 공식을 바탕으로 세 개의 for문을 돌려 팩토리얼을 구하게 함
3. 트러블슈팅
- 문제
테스트는 통과했으나 제출 테스트케이스에서 계속 실패함
- 원인
원인은 30!이 int 타입의 범위를 넘어 오버플로우가 발생했기 때문
- 해결 시도
우선 처음 접근 방식인 세 개의 for문을 돌리는 것이 비효율적이라 판단해 별도의 factorial() 메서드를 구현해 호출하는 방식을 시도했으나 근본 원인인 int 타입의 한계를 해결하지 못 함
- 해결
BigInteger 타입을 사용해 큰 숫자도 저장할 수 있도록 함
또한 코드 효율성을 위해 분모, 분자 따로 계산하는 것이 아니라 함께 계산되도록 함
4. 배운 개념
BigInteger 사용법
- BigInteger.ONE
- BigInteger.valueOf()
- multiply()
- divide()
5. 회고
30분 고민해도 해결이 안되면 아예 다른 방향을 틀 줄 알아야 함 .. 안되는 거 될 것 같다고 한 시간을 붙잡지 말 것