← 모든 알고리즘

입력

표준 입력으로 값 읽기 — cin / scanf / input().

Bronze
입력 기초: cin · scanf · input 공식

입력이란?

대부분의 문제는 표준 입력(standard input) 으로 데이터를 받습니다. 키보드로
직접 치는 대신, 채점기가 미리 준비한 입력을 프로그램에 흘려 넣어 줍니다.


1. 정수 한 개 / 여러 개 읽기

C++

#include <bits/stdc++.h>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b; // 공백·줄바꿈으로 구분된 두 정수
    cout << a + b << '\n';
}

Python

a, b = map(int, input().split())
print(a + b)

cin >>은 공백과 줄바꿈을 알아서 건너뛰며 값을 읽습니다. 파이썬의
input()은 한 줄을 통째로 읽으므로, split()으로 자르고 map(int, ...)
정수로 바꿔 줍니다.


2. 정해진 개수(N개) 읽기

int n;
cin >> n;
long long sum = 0;
for (int i = 0; i < n; i++) {
    int x; cin >> x;
    sum += x;
}
cout << sum << '\n';
n = int(input())
nums = list(map(int, input().split())) # 한 줄에 N개가 주어질 때
print(sum(nums))

3. 한 줄짜리 문자열 / 끝까지 읽기

띄어쓰기가 포함된 한 줄을 통째로 읽을 땐:

string line;
getline(cin, line); // 줄 전체(공백 포함)를 읽는다

입력이 몇 줄인지 모를 때(EOF까지):

int x;
while (cin >> x) { // 더 읽을 게 없으면 반복 종료
    // x 처리
}
import sys
for line in sys.stdin: # 줄 단위로 끝까지
    x = int(line)
    # x 처리

4. cin >> 다음 getline을 쓸 때 주의

int n; cin >> n;
cin.ignore(); // 줄바꿈 하나를 버려야 함!
string s; getline(cin, s);

cin >> n은 숫자만 읽고 줄바꿈을 입력 버퍼에 남깁니다. 곧바로
getline을 부르면 빈 줄이 읽히므로, 사이에 cin.ignore();를 넣으세요.


5. 자주 하는 실수

  • 입력 형식 무시 — "첫 줄에 N, 둘째 줄에 N개의 수"인데 한 줄에서 다 읽으려다 틀리는 경우. 문제의 입력 형식을 그대로 따라가세요.
  • 숫자/문자 혼합 입력에서 줄바꿈 처리 — 위 4번의 cin.ignore() 문제.
  • 느린 입력 — 수가 수십만 개면 cin도 느려질 수 있습니다. 다음 글 빠른 입출력을 보세요.

연습 팁

입력을 읽기 전에 문제의 입력 형식을 손으로 적어 보세요. "몇 줄? 각 줄에
몇 개? 정수인가 문자열인가?" 이 세 가지만 정리하면 입력 코드는 거의 기계적으로
나옵니다.