백엔드 공부를 하면서 CodeUp 기초 문제를 하나씩 풀어보고 있습니다.

이번 글은 CodeUp 1258번 풀이 기록입니다. 문제 원문은 출처 링크에서 확인할 수 있고, 여기서는 제가 어떻게 생각하고 Java 코드로 풀었는지 정리합니다.


문제

정수 n을 입력받습니다.

그리고 1부터 n까지의 모든 정수를 더한 값을 출력해야 합니다.

예를 들어 n이 5라면 아래 값을 구합니다.

1 + 2 + 3 + 4 + 5 = 15

즉, 핵심은 정해진 범위의 숫자를 차례대로 더하는 것입니다.


처음 떠오르는 생각

처음에는 빈 상자에 숫자를 하나씩 담는다고 생각했습니다.

합계를 담을 변수 sum을 먼저 0으로 준비합니다. 그다음 1부터 n까지 숫자를 하나씩 꺼내서 sum에 더합니다.

흐름은 이렇게 볼 수 있습니다.

sum = 0

1을 더함 -> sum = 1
2를 더함 -> sum = 3
3을 더함 -> sum = 6
...
n을 더함 -> 정답

이 문제에서 필요한 생각은 두 가지입니다.

  • for문으로 1부터 n까지 반복합니다.
  • sum 변수에 값을 계속 누적합니다.

핵심 아이디어

누적은 기존 값에 새 값을 더해서 다시 저장하는 방식입니다.

sum = sum + i;

Java에서는 이 코드를 아래처럼 짧게 쓸 수 있습니다.

sum += i;

두 코드는 같은 의미입니다.

현재 sum 값에 i를 더해서 다시 sum에 넣습니다.

sum은 반복문이 시작되기 전에 만들어야 합니다. 반복문 안에서 새로 만들면 매번 값이 초기화되어 합계를 쌓을 수 없습니다.


코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int sum = 0;

        for (int i = 1; i <= n; i++) {
            sum += i;
        }

        System.out.println(sum);
    }
}

코드 해설

먼저 입력을 받습니다.

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

n은 마지막 숫자입니다. n이 10이면 1부터 10까지 더합니다.

합계를 저장할 변수도 준비합니다.

int sum = 0;

처음에는 아직 아무 숫자도 더하지 않았기 때문에 0으로 시작합니다.

반복문은 1부터 n까지 진행합니다.

for (int i = 1; i <= n; i++) {
    sum += i;
}

i는 현재 더할 숫자입니다. i <= n 조건을 사용했기 때문에 n까지 포함해서 더합니다.

마지막으로 결과를 출력합니다.

System.out.println(sum);

실행 예시

입력이 아래와 같다고 해보겠습니다.

5

반복문 안에서는 다음 순서로 계산됩니다.

i계산 후 sum
11
23
36
410
515

출력은 다음과 같습니다.

15

복잡도

반복문은 1부터 n까지 한 번씩 실행됩니다.

n이 10이면 10번 더하고, n이 100이면 100번 더합니다. 입력이 커지는 만큼 반복 횟수도 같이 늘어납니다.

그래서 시간복잡도는 O(n)입니다.

추가로 사용하는 변수는 n, sum, i 정도입니다. 입력 크기가 커져도 따로 큰 배열을 만들지 않습니다.

공간복잡도는 O(1)입니다.


실수하기 쉬운 부분

sum을 반복문 안에서 선언하면 안 됩니다.

for (int i = 1; i <= n; i++) {
    int sum = 0;
    sum += i;
}

이렇게 쓰면 반복할 때마다 sum이 0으로 다시 만들어집니다. 값이 계속 쌓이지 않으므로 누적이 되지 않습니다.

또 하나는 클래스 이름입니다. CodeUp에 Java 코드를 제출할 때는 보통 클래스 이름을 Main으로 작성합니다.

public class Main {
}

로컬에서 연습할 때 파일 이름을 다르게 만들 수는 있지만, 제출할 때는 채점 사이트의 규칙에 맞춰야 합니다.


정리

CodeUp 1258번은 반복문과 누적 변수를 연습하기 좋은 기초 문제입니다.

풀이 흐름은 단순합니다.

  • sum을 0으로 준비합니다.
  • for문으로 1부터 n까지 반복합니다.
  • sum += i로 값을 계속 더합니다.
  • 마지막에 sum을 출력합니다.

이 문제를 풀면서 반복문은 단순히 같은 코드를 반복하는 문법이 아니라, 값을 차곡차곡 쌓는 방식으로도 자주 사용된다는 점을 확인할 수 있습니다.