이번 강좌에서는 배열과 리스트를 활용한 C# 코딩 테스트 문제를 다루어 보겠습니다. 배열과 리스트는 데이터 구조의 중요한 부분이며, 다양한 알고리즘 문제에서 자주 사용됩니다.
문제: 연속된 수의 합
문제 설명: 자연수 N이 주어질 때, 1부터 N까지의 연속된 자연수의 합을 구하는 프로그램을 작성하세요.
예를 들어, N = 10일 경우, 1 + 2 + 3 + … + 10 = 55입니다.
입력
자연수 N (1 ≤ N ≤ 1000)
출력
1부터 N까지의 합을 출력합니다.
문제 풀이 과정
이 문제를 해결하기 위해서는 배열이나 리스트를 사용하여 1부터 N까지의 수를 저장하고, 이를 합산하는 방법을 사용할 수 있습니다. 그러나 더 간단한 수학적 공식이 있기 때문에, Sum = N * (N + 1) / 2
를 이용하는 방법도 있습니다.
해결 방법
- 입력받기: 사용자로부터 자연수 N을 입력받습니다.
- 합계 계산: N까지의 합계를 계산합니다. 일반적으로는
for
루프를 사용하지만, 위의 공식을 사용할 수 있습니다. - 결과 출력: 계산한 합계를 출력합니다.
C# 코드 구현
using System;
class Program
{
static void Main(string[] args)
{
Console.Write("자연수 N을 입력하세요: ");
int N = int.Parse(Console.ReadLine());
// 방법 1: for 루프를 사용하여 합계 계산
int sum = 0;
for (int i = 1; i <= N; i++)
{
sum += i;
}
// 방법 2: 수학 공식을 사용하여 합계 계산
// int sum = N * (N + 1) / 2;
Console.WriteLine($"1부터 {N}까지의 합은 {sum}입니다.");
}
}
코드 설명
위 코드에서는 우선 사용자로부터 자연수 N을 입력받습니다. 이후 두 가지 방법 모두 제공하고 있습니다:
- 방법 1에서는
for
루프를 활용하여 1부터 N까지의 값을 차례로 더합니다. - 방법 2는 수학 공식을 사용하여 단순히 N 값을 입력받은 후에 산술연산으로 결과를 구합니다.
복잡도 분석
시간 복잡도: O(N) (for 루프를 사용할 경우)
공간 복잡도: O(1) (추가적인 배열이나 리스트를 사용하지 않을 경우)
결론
이번 강좌에서는 배열과 리스트를 이용한 간단한 문제를 통해 C#의 기초적인 알고리즘을 다루었습니다. 배열이나 리스트를 통한 데이터 관리의 중요성과 수학적 공식을 활용한 문제 풀이의 유용성에 대해 배웠습니다.
다음 강좌에서는 더욱 복잡한 배열과 리스트 관련 문제에 대해 다룰 예정입니다. 많은 기대 부탁드립니다!