Algorism
등차수열의 항 찾기
자라나라나무나무나
2022. 7. 18. 18:55
a : 초항
d : 인접한 차이
n : 찾는 항의 수
만약 항 번호가 없을 때에는 -1을 반환한다.
예시) f(1) = 1, f(2) = 3, f(3) = 5, f(4) = 7
반복문 사용
function answer(a, d, n) {
let index = -1;
let acc;
for(let i=1; ; i++) {
acc = a + d * ( i - 1 );
if(acc > n){
index = -1;
break;
}
if(acc == n) {
index = i;
break;
}
// console.log(acc);
}
return index;
}
let input = [
[1, 2, 7],
[2, 3, 10],
[3, 5, 23],
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i][0], input[i][1], input[i][2])}`);
}
if문 사용
function answer(a, d, n) {
let index = -1;
if ((n - a) % d == 0) {
index = (n - a) / d + 1;
} else index = -1;
return index;
}
let input = [
[1, 2, 7],
[2, 3, 10],
[3, 5, 23],
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i][0], input[i][1], input[i][2])}`);
}
if ((n - a) % d == 0) {
역으로 n - a(초항) 값을 하게되면 일정한 값의 등차값이 나오게 된다.
예시 ) 1, 3, 5, 7
7 - 1 => 6 % 2 == 0 등차수열에 속한다.
index = (n - a) / d + 1
d + 1 인 이유는 초항의 값이 1이기 때문이다.
d로 나누게 되면 n의 값을 구할 수 있다.