• Home
  • About
    • Eyedicamp 개발 이야기 photo

      Eyedicamp 개발 이야기

      Big Data, Machine Learning, AI 등의 다양한 이야기를 하는 곳.

    • Learn More
    • Email
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[BOJ 10810] 공 넣기

05 Feb 2026

Reading time ~3 minutes

문제 요약

N개의 바구니(1~N)가 있고, M번에 걸쳐 구간 [i, j]에 공 번호 k를 “덮어쓰기”로 넣는다.
모든 작업이 끝난 뒤 1번부터 N번 바구니에 들어있는 공 번호를 출력한다. (없으면 0)

핵심은 구간 업데이트를 순서대로 그대로 적용하면 된다는 점이다. (N, M ≤ 100이라 완전탐색으로 충분)


내가 처음 작성한 코드

아래처럼 input()으로 입력 받고, 마지막 출력도 직접 루프를 돌면서 공백 처리까지 해줬다.

n, m = map(int, input().split())

baskets = [0] * n

for i in range(m):
    i, j, k = map(int, input().split())
    for index in range(i-1, j):
        baskets[index] = k

for index in range(n):
    if index == n-1:
        print(baskets[index], end="")
    else:
        print(baskets[index], end=" ")

동작은 맞지만,

  • 입력이 많아지면 input()은 느릴 수 있고
  • 출력에서 공백 처리 로직이 길어져서 코드가 지저분해진다.

개선한 코드: sys.stdin.readline + print(*list)

코딩테스트에서 자주 쓰는 패턴으로 바꿨다.

1) 빠른 입력: sys.stdin.readline

sys는 파이썬 표준 라이브러리이고 항상 사용 가능한 모듈이다.
sys.stdin.readline()은 한 줄 단위로 읽어서, 입력이 많을 때 input()보다 빠른 경우가 많다.

2) 깔끔한 출력: print(*baskets)

리스트를 언패킹해서 print(a, b, c, ...)처럼 출력할 수 있다.
기본 구분자 sep=" "가 적용돼서 “공백으로 구분된 출력”이 간단해진다.


최종 코드 (추천)

import sys

input = sys.stdin.readline

n, m = map(int, input().split())
baskets = [0] * n

for _ in range(m):
    i, j, k = map(int, input().split())
    for idx in range(i - 1, j):
        baskets[idx] = k

print(*baskets)

(선택) 더 파이써닉하게: 슬라이싱으로 구간 덮어쓰기

위 문제는 “구간을 같은 값으로 채우기”라서, 아래처럼도 가능하다.

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
baskets = [0] * n

for _ in range(m):
    i, j, k = map(int, input().split())
    baskets[i-1:j] = [k] * (j - i + 1)

print(*baskets)

N과 M이 작을 때는 둘 다 충분히 빠르다.
다만 슬라이싱 버전은 “구간을 한 번에 교체한다”는 의도가 더 잘 드러나서 읽기 쉬운 편이다.


이번 문제로 배운 것 정리

  • 코딩테스트에서 sys(표준 라이브러리)를 import 해서 빠르게 입력받는 패턴을 익혔다.
    • input = sys.stdin.readline 로 바꿔두면 코드가 깔끔해진다.
  • 리스트 출력은 print(*baskets)로 공백 구분 출력을 한 줄로 끝낼 수 있다.
  • 출력 포맷 때문에 불필요하게 루프/조건문이 길어질 때, 파이썬 문법(언패킹, sep 등)으로 단순화할 수 있다.



pythonsysstdinprintimplementation Share Tweet +1