문제

입력된 값을 통해서 등차 수열의 몇 번째 항인지를 구하는 프로그램을 작성하시오.

입력은 초항 a, 인전합 차이 d, 찾는 항의 수 n이 주어지며, n값에 해당하는 항 번호를 반환한다.

단, 만약 항 번호가 없을 시에는 -1를 반환한다.


예시

예를 들어 a = 1, d = 2, n = 7 이 주어졌을 때 f(1) = 1, f(2) = 3, f(3) = 5, f(4) = 7이 되므로 n = 7에 해당하는 항인 4를 반환한다.

Copy
# 입력값
1 2 7
2 3 10
3 5 23
Copy
# 출력값
4
-1
5

코드

👉 방법1

Copy
function answer(a, d, n) {
  let index;
  let num;
  for (let i = 1; ; i++) {
    num = a + d * (i - 1);
    if (num > n) {
      index = -1;
      break;
    }
    if (num == n) {
      index = i;
      break;
    }
  }
  return index;
}

👉 방법2 (성능↑)

Copy
function answer(a, d, n) {
  let index;
  if ((n - a) % d == 0) {
    index = (n - a) / d + 1;
  } else index = -1;
  return index;
}
Copy