RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
← 브론즈 V

출력

표준 출력으로 값을 내보내는 방법 — cout, print(), 형식 지정.

기초 & 구현 Bronze V 브론즈 V
1강 출력 기초: C++와 Python 공식 작성: rip

출력이란?

거의 모든 문제는 입력을 읽고 → 계산하고 → 결과를 출력하는 구조입니다.
그중 마지막 단계인 출력은 가장 기본이면서도, 사소한 실수(공백·줄바꿈)로
틀리기 쉬운 부분입니다. 이 글에서는 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. 여러 값을 공백으로 구분해 출력

AB를 한 줄에 공백으로 띄워 출력하기:

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)에 모았다가
한 번에 출력하면 더 빠릅니다.

Pythonprint를 여러 번 호출하면 느리므로, 모아서 한 번에 출력합니다.

import sys
out = []
for i in range(n):
    out.append(str(i))
sys.stdout.write('\n'.join(out) + '\n')

6. 자주 하는 실수

  • 마지막 줄바꿈 빠뜨리기 — 대부분의 채점기는 마지막 줄에도 '\n'이 있어야 안전합니다.
  • 불필요한 공백/문구 출력"답: 5"처럼 안내 문구를 같이 출력하면 틀립니다. 문제에서 요구한 값만 출력하세요.
  • 줄바꿈과 공백 혼동 — "한 줄에 출력"인지 "각 줄에 하나씩"인지 문제 조건을 꼭 확인하세요.
  • 실수 출력 형식 — 자릿수, 반올림 방식이 문제 조건과 맞는지 확인하세요.

연습 팁

출력 형식이 헷갈릴 땐, 문제의 예제 출력을 그대로 복사해 내 출력과
한 글자씩(공백·줄바꿈 포함) 비교해 보세요. 눈에 안 보이는 공백 하나가
원인인 경우가 많습니다.

2강 출력 형식 맞추기: 공백·소수점·줄바꿈 공식

출력 형식이 틀리면 다 틀린다

답을 맞게 계산해도 출력 형식이 어긋나면 오답 처리됩니다. 채점기는 글자 하나
까지 똑같이 비교하므로, 공백·소수점 자릿수·줄바꿈을 정확히 맞춰야 합니다.


1. 한 줄에 여러 값, 공백으로 구분

int a = 3, b = 5;
cout << a << ' ' << b << '\n';   // "3 5"
print(3, 5)        # "3 5" — print는 인자 사이에 공백을 넣는다

값 사이엔 보통 공백 하나, 줄 끝엔 줄바꿈 하나입니다. 줄 끝에 불필요한 공백
붙이면 틀릴 수 있으니 조심하세요.


2. 소수점 자릿수 지정

"소수점 아래 N자리까지 출력"이라는 요구가 자주 나옵니다.

#include <iomanip>
double x = 3.14159265;
cout << fixed << setprecision(2) << x << '\n';   // 3.14
x = 3.14159265
print(f"{x:.2f}")        # 3.14

fixedsetprecision은 한 번 설정하면 이후 출력에 계속 적용됩니다.


3. 반복 출력 — 줄바꿈 위치

여러 줄을 출력할 땐 각 줄마다 줄바꿈을 넣습니다.

for (int i = 1; i <= n; i++)
    cout << i << '\n';      // 한 줄에 하나씩

한 줄에 모아 출력해야 하면 공백으로 구분하고 마지막에 한 번만 줄바꿈합니다.

print(*range(1, n + 1))    # 1 2 3 ... n  (공백 구분 한 줄)

4. endl보다 '\n'

C++에서 endl은 줄바꿈에 더해 버퍼를 매번 비우므로 느립니다. 출력이 많으면
'\n'을 쓰세요.

cout << ans << '\n';   // endl 대신 '\n'

정리

  • 값 구분은 공백 하나, 줄 끝은 줄바꿈 하나.
  • 소수는 setprecision(C++) / f"{x:.2f}"(파이썬)로 자릿수 고정.
  • 줄 끝 군더더기 공백 금지.
  • 출력이 많으면 endl 대신 '\n'.
3강 출력으로 푸는 패턴 문제 공식

출력 자체가 핵심인 문제들

별 찍기, 표 그리기처럼 무엇을 어떻게 출력하느냐가 문제의 전부인 유형이
Bronze에 많습니다. 반복문과 출력의 조합을 연습해 봅시다.


1. 별 찍기 (직각 삼각형)

*
**
***
for (int i = 1; i <= n; i++) {
    for (int j = 0; j < i; j++) cout << '*';
    cout << '\n';
}
for i in range(1, n + 1):
    print('*' * i)      # 파이썬은 문자열 * 정수로 반복

i번째 줄에 별 i개. 바깥 반복은 줄, 안쪽 반복은 그 줄의 글자 수를 담당합니다.


2. 오른쪽 정렬 삼각형 (공백 채우기)

  *
 **
***
for (int i = 1; i <= n; i++) {
    for (int j = 0; j < n - i; j++) cout << ' ';   // 앞 공백
    for (int j = 0; j < i; j++) cout << '*';        // 별
    cout << '\n';
}
for i in range(1, n + 1):
    print(' ' * (n - i) + '*' * i)

핵심은 공백도 출력해야 할 글자라는 점입니다. 줄마다 공백 (n - i)개 + 별 i개.


3. 구구단 표

for (int i = 2; i <= 9; i++) {
    for (int j = 1; j <= 9; j++)
        cout << i << " * " << j << " = " << i * j << '\n';
    cout << '\n';   // 단 사이 빈 줄
}
for i in range(2, 10):
    for j in range(1, 10):
        print(f"{i} * {j} = {i * j}")
    print()

4. 자주 하는 실수

  • 줄바꿈 위치 — 안쪽 반복이 끝난 뒤에 줄바꿈을 넣어야 하는데, 안쪽에 넣어 칸마다 줄이 바뀌는 실수.
  • 공백 개수 오차 — 정렬 문제에서 앞 공백 개수를 하나 틀리는 경우. 작은 N으로 직접 손으로 그려 확인하세요.
  • 마지막 줄 군더더기 — 줄 끝에 별 외에 공백을 붙이지 않도록.

정리

출력 패턴 문제는 "바깥 반복 = 줄, 안쪽 반복 = 그 줄의 내용"이라는 틀로
거의 다 풀립니다. 헷갈리면 N=3 정도로 종이에 직접 그려서 규칙을 찾으세요.