본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 15. 특정 수열의 n번째 항까지 출력하기

by 제이투더문 2024. 6. 29.

 

 안녕하세요, 작가 J입니다. 이번에는 조금 다른 유형의 문제를 풀어보겠습니다. 정수 n을 입력받아 특정 수열의 n번째 항까지 출력하는 프로그램을 작성할 것입니다. 이 예제는 수열의 규칙을 이해하고 이를 바탕으로 프로그램을 작성하는 방법을 배우는 데 도움이 될 것입니다.

 

[Java Festival 15] 특정 수열의 n번째 항까지 출력하기

정수 n을 입력받아

1, 2, 4, 7, 11과 같은 수열의

n번째 항까지 출력하시오.

 

 

 

 

문제 해석

이 수열은 다음과 같은 규칙을 따릅니다:

  • 첫 번째 항: 1
  • 두 번째 항: 2
  • 세 번째 항: 4
  • 네 번째 항: 7
  • 다섯 번째 항: 11
  • 여섯 번째 항: 16
  • 일곱 번째 항: 22

항마다 이전 항의 값에 1, 2, 3, 4, 5, 6... 순차적으로 더해지는 것을 알 수 있습니다. 문제를 보고 규칙을 찾아내서 풀이 방법을 생각해내야 합니다.

 

코드 풀이

이번 문제를 해결하기 위한 자바 코드를 작성해 보겠습니다.

 

import java.util.Scanner;

public class Ex15 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("n 입력: ");
        int n = sc.nextInt();
        
        int num = 1;         // 초기값 설정
        int currentNum = 0;  // 현재 수열의 값을 저장하는 변수
        
        for (int i = 0; i < n; i++) {
            currentNum = num + i;    // 현재 수열 값 계산
            System.out.print(currentNum + " "); // 현재 값 출력
            num = currentNum;        // 다음 계산을 위해 num 업데이트
        }
        
        sc.close();
    }
}

 

코드 설명

1. 초기값 설정 및 변수 선언

수열의 초기값과 현재 값을 저장할 변수를 선언합니다.

  • int num = 1;: 수열의 첫 번째 값을 1로 설정합니다.
  • int currentNum = 0;: 현재 값을 저장할 변수를 0으로 초기화합니다.

2. 수열 생성 및 출력

수열의 규칙에 따라 값을 계산하고 출력합니다.

  • for (int i = 0; i < n; i++): 0부터 n-1까지 반복합니다.
  • currentNum = num + i;: 현재 값을 이전 값에 i를 더하여 계산합니다.
  • System.out.print(currentNum + " ");: 계산된 현재 값을 출력합니다.
  • num = currentNum;: 다음 계산을 위해 num을 현재 값으로 업데이트합니다.

배열을 사용해서 간단히 풀어볼 수도 있을 것 같습니다.

 

import java.util.Scanner;

public class Ex15 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("정수 n을 입력하세요: ");
        int n = sc.nextInt();
        
        int[] sequence = new int[n];
        
        sequence[0] = 1; // 첫 번째 항
        
        for (int i = 1; i < n; i++) {
            sequence[i] = sequence[i - 1] + i;
        }
        
        for (int i = 0; i < n; i++) {
            System.out.print(sequence[i] + " ");
        }
        
        sc.close();
    }
}

 

1. 수열 배열 초기화 및 첫 번째 항 설정

수열을 저장할 배열을 초기화하고 첫 번째 항을 설정합니다.

  • int[] sequence = new int[n];: 크기가 n인 정수 배열을 생성합니다.
  • sequence[0] = 1;: 첫 번째 항을 1로 설정합니다.

2. 수열 생성

수열의 규칙에 따라 배열을 채웁니다.

  • for (int i = 1; i < n; i++): 두 번째 항부터 n번째 항까지 순차적으로 값을 계산합니다.
  • sequence[i] = sequence[i - 1] + i;: 현재 항의 값을 이전 항의 값에 i를 더하여 계산합니다.

 

마무리

 이번 예제에서는 정수 n을 입력받아 특정 수열의 n번째 항까지 출력하는 방법을 배웠습니다. 이를 통해 수열의 규칙을 이해하고, 이를 바탕으로 프로그램을 작성하는 방법을 익힐 수 있었습니다. 수열을 다루는 능력은 알고리즘 문제 해결에 매우 중요하며, 다양한 문제를 풀어보며 실력을 키워나가는 것이 좋습니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!