읽기 전에 알아두면 좋아요
아래 개념이 익숙하면 본문을 바로 읽으세요. 낯선 개념만 링크에서 복습하면 됩니다.
- 기초 구현 패턴: 조건·정수 계산·순회·상태 갱신변수에 값을 담고 조건에 따라 합·개수·최솟값을 갱신하는 기초부터 확인합니다. 반복 범위와 누적 합의 갱신을 한 단계씩 추적합니다.
- JavaScript 배열: 인덱스 조회와 삽입·삭제 비용배열은 여러 값을 순서대로 담습니다. 인덱스로 값을 읽고 반복문으로 하나씩 살펴봅니다. 인덱스 접근과 배열을 순회할 때의 연산 비용을 확인합니다.
개념과 예제는 실행하지 않아도 읽을 수 있습니다. 내 컴퓨터·터미널에서 직접 실행하는 과정은 선택 실습입니다.
과정 위치와 선택 복습 안내
과정 위치: 준비와 기초 구현 · 문제
과정 위치는 이 글이 속한 묶음입니다. 이 단계의 모든 개념을 먼저 읽을 필요는 없습니다. 위에 연결한 개념 중 낯선 내용만 복습하세요. 문제의 조건·상태·갱신 순서는 익숙한 언어로 설명하면 됩니다.
JavaScript로 문법·실행 복습하기 (선택)
개념 글의 코드는 JavaScript 예시입니다. 문제 화면에서는 JavaScript·Python·Java·C++·C# 중 익숙한 언어의 함수를 작성하세요. 본문의 Node.js 입출력 예시는 로컬 실행을 위한 별도 안내입니다.
1부터 N까지 합 출력하기에서는 자연수 N을 받아 어느 범위의 합을 구하나요?
자연수 N을 입력받아 1부터 N까지의 합을 구하는 문제입니다. 변수·정수 계산·반복문의 기본을 준비하고, 아래 입력·반환 계약을 확인해 직접 풀어보세요.
적용 조건·범위: 이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.
공식 문서 참고: 관련 개념: MIT 자연수 합 공식의 귀납 증명(5.1.2절)
문제
문제 설명
자연수 N이 입력되면 1부터 N까지의 합을 출력하는 프로그램을 작성하세요.
입력 설명
첫 번째 줄에 20 이하의 자연수 N이 입력됩니다.
출력 설명
첫 번째 줄에 1부터 N까지의 합을 출력합니다.
입력 예제 1
6
출력 예제 1
21
입력 예제 2
10
출력 예제 2
55
직접 풀어보기
먼저 선택한 언어의 입력·반환 계약에 맞춰 작성해 보세요. 힌트 받기와 정답과 비교하기는 코드를 실행하지 않는 AI 분석입니다. 해답·해설은 아래에서 필요할 때 펼칠 수 있습니다.
AI 힌트
코드를 실행한 채점 결과가 아닌 AI의 코드 분석입니다.
해답·해설 보기
function solution(n) {
return n *(n + 1) / 2;
}
solution(n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.
def solution(n):
return n * (n + 1) // 2
solution(n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.
import java.util.*;
class Solution {
public int solution(int n) {
return n *(n + 1) / 2;
}
}
Solution.solution(int n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.
#include <algorithm>
#include <string>
#include <vector>
#include <map>
#include <stack>
#include <stdexcept>
int solution(int n) {
return n *(n + 1) / 2;
}
solution(n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.
using System;
using System.Collections.Generic;
public class Solution {
public int Solve(int n) {
return n *(n + 1) / 2;
}
}
Solution.Solve(int n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.
원자료와 확인 범위
2026-10-12에 제공된 학습 자료 섹션 1. 기본문제풀이.pdf의 4쪽 ‘1부터 N까지 합 출력하기’와 문제 조건·예제를 대조했습니다. 같은 ZIP의 해당 문제 TXT는 풀이 코드 자료입니다. 이 자료의 최초 출제 원문·저자·공개 배포 주소까지 확인한 것은 아닙니다.
이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.
결론부터 말하면 최종 코드는 입력값 N을 읽은 뒤 N * (N + 1) / 2를 계산해 출력하면 됩니다. 이 식은 1부터 N까지의 합을 구하는 등차수열 합 공식입니다.
반복문으로 sum을 만들며 차례대로 더할 수도 있지만, 이 문제처럼 더해야 할 값이 연속된 정수라면 등차수열 합 공식을 쓰는 편이 더 간결합니다. 최종 풀이에서는 모든 항을 순회하지 않고 계산식 한 번으로 답을 구합니다.
알고리즘 설계

등차수열 합 공식의 핵심은 처음 값과 마지막 값을 짝지어 보는 것입니다. 1과 N을 더하면 N + 1이 되고, 2와 N - 1을 더해도 N + 1이 됩니다. 이런 구조가 반복되기 때문에 전체 합은 N * (N + 1) / 2로 정리됩니다.
실행 순서는 단순합니다. 먼저 표준 입력에서 문자열을 읽습니다. 그다음 불필요한 공백을 제거하고, 값을 숫자 N으로 변환합니다. 마지막으로 N * (N + 1) / 2를 계산한 값을 answer에 담고 출력합니다.
- 입력 문자열을 읽습니다.
trim으로 앞뒤 공백을 제거합니다.Number로 정수N을 만듭니다.N * (N + 1) / 2로 합을 계산합니다.console.log로 정답을 출력합니다.
공식은 N을 입력으로 받은 뒤 바로 N * (N + 1) / 2 형태로 적용합니다. 예제의 N = 10이라면 10 * 11 / 2가 되어 55가 나오고, N = 6이라면 6 * 7 / 2로 21을 얻습니다.

Node.js에서는 fs 모듈의 readFileSync를 사용해 표준 입력을 읽는 방식이 흔히 사용됩니다. 입력이 정수 하나라면 전체 입력을 문자열로 받은 뒤 trim을 적용하고, Number로 변환하면 충분합니다.
이 문제의 입력은 20 이하의 자연수 N이므로 Number로 충분히 정확하게 처리할 수 있습니다. 따라서 별도 큰 정수 처리를 고민하기보다 입력 문자열을 숫자로 바꾸고 공식에 넣는 흐름에 집중하면 됩니다.
아래 코드는 표준 입력에서 N을 받아 합을 출력하는 완성 코드입니다.
표준 입력을 읽는 아래 코드를 Node.js용 solution.cjs로 저장하고 input.txt에는 6 한 줄을 넣습니다. Bash·명령 프롬프트의 node solution.cjs < input.txt 또는 PowerShell의 cmd /c “node solution.cjs < input.txt”로 실행하면 기대값은 21입니다. 1+2+3+4+5+6으로도 검산하세요. 입력을 10으로 바꾼 기대값은 55이며 마지막 항 N까지 포함한 합이어야 합니다.
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8').trim();
const N = Number(input);
const answer = (N * (N + 1)) / 2;
console.log(answer);
첫 줄의 require는 fs 모듈을 불러옵니다. readFileSync(0, 'utf8')은 표준 입력 전체를 문자열로 읽습니다. 여기서 0은 표준 입력 파일 디스크립터를 뜻하며, 온라인 저지 환경에서 입력을 받는 데 사용할 수 있습니다.
input에는 입력 문자열이 저장되고, trim은 줄바꿈이나 공백을 제거합니다. 이후 Number(input)으로 문자열을 숫자로 바꾸어 N에 저장합니다. 계산식은 (N * (N + 1)) / 2이며, 괄호를 넣어 곱셈과 덧셈의 관계를 더 분명하게 표현했습니다.
출력은 console.log(answer) 한 줄입니다. 문제에서 요구하는 값은 합 하나이므로, 불필요한 문장이나 추가 값을 함께 출력하면 안 됩니다. 온라인 저지 문제에서는 출력 형식이 엄격하기 때문에 정답 값만 출력하는 습관이 중요합니다.
복잡도와 검증
최종 코드의 시간 복잡도는 O(1)입니다. 입력을 숫자로 바꾼 뒤 일정한 개수의 산술 연산만 수행하기 때문입니다.
공간 복잡도도 O(1)입니다. 입력값 N, 결과값 answer, 입력 문자열 input 정도만 사용하고, 입력 크기에 비례해 커지는 배열이나 별도 자료구조를 만들지 않습니다.
검증할 때는 문제에서 제공한 예제를 그대로 대입해 보면 됩니다. 입력이 6이면 6 * 7 / 2 = 21이고, 입력이 10이면 10 * 11 / 2 = 55입니다. 최소 입력인 1에서도 결과가 1이 되는지 확인하면 공식 적용과 출력 형식을 함께 점검할 수 있습니다.
이 문제의 핵심은 연속된 정수의 합을 반복 누적이 아니라 공식으로 바로 계산할 수 있다는 점입니다. 풀이 구조는 짧지만, 입력 처리와 출력 형식을 정확히 맞추어야 실제 제출 코드로 사용할 수 있습니다.
이 문제를 푼 뒤 확인하기
N=1일 때의 결과를 구하고, 공식의 합이 마지막 항 N까지 포함하는지 직접 덧셈으로 확인해 보세요.
본문의 예제와 이 반례를 직접 실행해 예상 출력과 비교하고, 결과가 다르면 입력 조건과 반복 범위를 다시 확인하세요.
이 글이 도움이 되었나요?
이어서 공부하기
체크포인트: 해설을 가리고 다시 풀고, 경계 입력을 하나 바꾸어 예상 결과와 실제 결과를 비교하세요. 직전 값과 지금까지의 최댓값을 구분하고, 초기값과 갱신 순서를 손으로 추적하세요.
다음 추천 · 문제: 최솟값 구하기 풀이|배열 순회와 비교 갱신 원리
권장 순서는 학습 가이드와 같습니다. 다른 순서는 접힌 참고 목록에서 확인할 수 있습니다. 읽음 표시는 숙달이나 채점 결과가 아닙니다.
원래 과정 목록 순서 (선택)
읽음 기록
읽음 — / 전체 58개 · 필수 58개
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.