출력이란?
거의 모든 문제는 입력을 읽고 → 계산하고 → 결과를 출력하는 구조입니다.
그중 마지막 단계인 출력은 가장 기본이면서도, 사소한 실수(공백·줄바꿈)로
틀리기 쉬운 부분입니다. 이 글에서는 C++와 Python을 기준으로 출력의 기본기를 정리합니다.
1. 기본 출력
C++
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "Hello, World!" << '\n';
return 0;
}
Python
print("Hello, World!")
cout은 <<로 값을 이어 붙여 출력하고, Python의 print()는 출력 후 자동으로 줄바꿈합니다.
2. 줄바꿈: '\n' vs endl
cout << a << '\n'; // 권장
cout << a << endl; // 매번 버퍼를 비움(flush) → 느림
endl은 줄바꿈과 동시에 출력 버퍼를 비우기 때문에, 출력이 많은 문제에서는
'\n'을 쓰는 것이 훨씬 빠릅니다. 습관적으로 '\n'을 쓰세요.
Python에서는 줄바꿈 문자를 바꾸려면 end 인자를 사용합니다.
print(a, end='') # 줄바꿈 없이 출력
print(a, end='\n') # 기본값
3. 여러 값을 공백으로 구분해 출력
A와 B를 한 줄에 공백으로 띄워 출력하기:
C++
cout << a << ' ' << b << '\n';
Python
print(a, b) # print는 인자 사이에 공백을 자동으로 넣는다
print(a, b, sep=', ') # 구분자를 바꿀 수도 있다
4. 실수(소수) 출력
소수점 아래 자릿수를 맞춰 출력해야 하는 문제가 많습니다.
예를 들어 소수점 아래 둘째 자리까지 출력하려면:
C++
#include <bits/stdc++.h>
using namespace std;
int main() {
double x = 3.14159;
cout << fixed << setprecision(2) << x << '\n'; // 3.14
printf("%.2f\n", x); // 3.14
}
Python
x = 3.14159
print(f"{x:.2f}") # 3.14
print(round(x, 2)) # 3.14 (단, round는 표시 자릿수를 보장하지 않음)
일반적으로 출력 형식이 정해져 있을 땐 printf / f-string 의 자리수 지정이 가장 안전합니다.
5. 빠른 출력
출력 줄 수가 수십만 줄이 넘어가면 출력 속도도 중요해집니다.
C++ — endl 대신 '\n'을 쓰고, 입출력 동기화를 끕니다.
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
출력이 아주 많을 땐 결과를 문자열(또는 ostringstream)에 모았다가
한 번에 출력하면 더 빠릅니다.
Python — print를 여러 번 호출하면 느리므로, 모아서 한 번에 출력합니다.
import sys
out = []
for i in range(n):
out.append(str(i))
sys.stdout.write('\n'.join(out) + '\n')
6. 자주 하는 실수
- 마지막 줄바꿈 빠뜨리기 — 대부분의 채점기는 마지막 줄에도
'\n'이 있어야 안전합니다. - 불필요한 공백/문구 출력 —
"답: 5"처럼 안내 문구를 같이 출력하면 틀립니다. 문제에서 요구한 값만 출력하세요. - 줄바꿈과 공백 혼동 — "한 줄에 출력"인지 "각 줄에 하나씩"인지 문제 조건을 꼭 확인하세요.
- 실수 출력 형식 — 자릿수, 반올림 방식이 문제 조건과 맞는지 확인하세요.
연습 팁
출력 형식이 헷갈릴 땐, 문제의 예제 출력을 그대로 복사해 내 출력과
한 글자씩(공백·줄바꿈 포함) 비교해 보세요. 눈에 안 보이는 공백 하나가
원인인 경우가 많습니다.