어떤 규칙에 의하여 항을 몇 개씩 묶어서 이루어지는 수열을 군수열이라고 한다.
- 규칙성을 갖는다.
- 각 군 안의 항의 개수를 조사한다.
- n 군의 첫째항을 구한다.
ex) 첫째항부터 순서대로 1개, 2개, 3개, ... 묶어서 나타낸다. 묶음을 차례로 제1군, 제2군, 제3군 이라고 한다.
(1), (1, 2), (1, 2, 3), (1, 2, 3, 4), ...
제 n군의 항의 개수 = n개
따라서 제1군 부터 n군까지의 항의 개수는 아래와 같이 표현할 수 있다.
(n * (n + 1) / 2)
그럼 k 번째 항을 구한다고 가정하면 어떤 식으로 문제를 풀어야할까..
예를 들어 10번 째 항을 구한다고 가정하자.
function solution(k) {
let gun = 0;
for(let i = 1; i < k; i++){
if(k <= (i * (i + 1) / 2){
gun = i - 1;
break;
}
}
return k - (gun * (gun + 1) / 2);
}