이 문제에서는 정수 N이 주어지며, 수열 1, 4, 27, 16, 125, 36, 343...에서 n번째 항을 찾아야 합니다.
문제 이해를 위한 예시
입력
N = 7
출력
343
설명
주어진 수열은 1, 4, 27, 16, 125, 36, 343...과 같이 진행됩니다. 7번째 항은 343입니다.
해결 접근 방법
이 문제의 가장 간단한 해결 방법은 수열의 일반항을 찾는 것입니다. 이 수열은 두 개의 서로 다른 규칙이 번갈아 나타나는 구조입니다. 즉, 홀수 번째 항과 짝수 번째 항이 각각 다른 패턴을 따릅니다.
- 짝수 번째 항: 해당 인덱스의 제곱 값입니다. 예: 2² = 4, 4² = 16, 6² = 36
- 홀수 번째 항: 해당 인덱스의 세제곱 값입니다. 예: 1³ = 1, 3³ = 27, 5³ = 125, 7³ = 343
따라서 현재 항의 인덱스가 짝수이면 인덱스의 제곱을, 홀수이면 인덱스의 세제곱을 반환하면 됩니다.
구현 코드
다음은 위 해결 방법의 동작을 보여주는 C++ 프로그램입니다.
#include <iostream>
using namespace std;
int findNthTerm(int N) {
if (N % 2 == 0)
return (N * N);
return (N * N * N);
}
int main() {
int N = 8;
cout << "The " << N << "th term of the series is " << findNthTerm(N);
return 0;
}출력 결과
The 8th term of the series is 64
코드 설명
findNthTerm 함수는 입력값 N이 짝수인지 홀수인지 확인합니다. N이 짝수이면 N의 제곱(N²)을 반환하고, 홀수이면 N의 세제곱(N³)을 반환합니다. 위 예제에서 N=8은 짝수이므로 8² = 64가 출력됩니다.
이 알고리즘의 시간 복잡도는 O(1)로, 상수 시간에 결과를 계산할 수 있어 매우 효율적입니다.