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

      Eyedicamp 개발 이야기

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

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

[BOJ 2750] 수 정렬하기

05 Feb 2026

Reading time ~3 minutes

문제 요약

N개의 정수가 주어질 때, 오름차순으로 정렬해서 한 줄에 하나씩 출력한다.
(N ≤ 1,000, 각 수는 중복 없음)


내가 작성한 코드 (정답)

sys.stdin.readline으로 입력을 받고, print(*numbers, sep='\n')로 출력 포맷을 깔끔하게 처리한 점이 좋다.

import sys

input = sys.stdin.readline

n = int(input())

numbers = []

for _ in range(n):
    number = int(input())
    numbers.append(number)

numbers.sort()

print(*numbers, sep='\n', end='')

개선할 수 있는 점

1) 리스트 입력은 컴프리헨션으로 더 간단하게

반복문 + append 대신 아래처럼 한 줄로 만들 수 있다.

numbers = [int(input()) for _ in range(n)]

2) 출력은 join + sys.stdout.write 패턴이 자주 쓰인다

print(*..., sep='\n')도 충분히 좋지만, 코테에서는 아래처럼 문자열을 한 번에 만들어 출력하는 패턴을 많이 쓴다.

  • 불필요한 end='' 처리 고민이 줄어듦
  • 출력량이 많을 때도 안정적으로 빠름

최종 코드 (추천 1): 컴프리헨션 + join

import sys
input = sys.stdin.readline

n = int(input())
numbers = sorted(int(input()) for _ in range(n))

sys.stdout.write('\n'.join(map(str, numbers)))

이 코드에서 배울 수 있는 점

  • sorted(...)를 쓰면 “정렬된 새 리스트”를 바로 만들 수 있다.
  • map(str, numbers)로 정수 리스트를 문자열로 바꾼 뒤 \n.join(…)으로 한 번에 출력한다.
  • sys.stdout.write는 마지막 개행 처리까지 직접 컨트롤할 수 있다.

최종 코드 (추천 2): sys.stdin.read로 더 간단하게 (대안)

입력을 통째로 읽어서 처리하는 스타일도 많이 쓴다.

import sys

data = sys.stdin.read().split()
n = int(data[0])
numbers = sorted(map(int, data[1:1+n]))

sys.stdout.write('\n'.join(map(str, numbers)))

이 코드에서 배울 수 있는 점

  • sys.stdin.read()는 입력 전체를 한 번에 가져온다.
  • split() 후 숫자만 뽑아 map(int, ...)으로 변환하면 루프가 줄어든다.
  • 입력량이 큰 문제에서 특히 유용한 패턴이다.

이번 문제로 배운 점 정리

  • 코딩테스트에서 sys.stdin.readline으로 입력을 받으면 입력 처리 패턴을 통일할 수 있다.
  • 출력은 print(*arr, sep='\n')로 포맷을 깔끔하게 만들 수 있고, 더 나아가 sys.stdout.write('\n'.join(...))로 한 번에 출력하는 방식도 자주 쓰인다.
  • 정렬은 list.sort()(제자리 정렬) 또는 sorted()(새 리스트 반환) 중 상황에 맞게 선택하면 된다.



pythonsysstdinsortoutput Share Tweet +1