Algorithm/Baekjoon

백준 24267번

minhi 2025. 2. 12. 12:48

백준 24267번을 풀어보았다.

 

앞서 풀어본 24262~24266번과 유사하지만 수행 횟수를 구하는 데 보다 수학적인 사고를 요한다.

 

먼저 정답 풀이는 아래와 같다.

let n = BigInt(require('fs').readFileSync('/dev/stdin').toString())

console.log((n*(n-1n)*(n-2n)/6n).toString())
console.log(3)

 

수행 횟수를 구하는 방법은 크게 3가지로 정리해보았다.

 

1. 문제 상황 그대로 식 세우기

 

문제 상황 그대로 식을 세워보면 아래와 같다.

이를 n에 대해 정리하여 수행 횟수를 구할 수 있다. 

 

2. 나열해보며 규칙 발견하기

 

주어진 범위 내에서 직접 나열해보며 규칙을 발견해보면 아래와 같다.

마지막 시그마를 n에 대해 정리하여 수행 횟수를 구할 수 있다.

 

이때, 꼭 위와 같은 방법이 아니어도 규칙을 찾을 수 있는 방법은 다양하다.

 

3. 조합적 사고

 

문제 상황을 잘 들여다보면 i, j, k는 1부터 n까지의 정수 중 중복되지 않게 3개의 정수를 선택하는 상황과 동일하다.

 

따라서 nC3을 n에 대해 정리하여 수행 횟수를 구할 수 있다.

 

 

위의 세 가지 방법 중 하나를 이용하여 수행 횟수를 구하면 간단하게 해결되는 문제였다.

 

다만 number 자료형이 아닌 bigint 자료형을 사용해야 한다는 사실만 유의하자.

 

참고) 백준 24266번