본문 바로가기
백준 - 파이썬/단계별 - 13 (정렬)

[백준/파이썬] 2751번 수 정렬하기 2 | 시간초과주의 - sys, join이용

by miiinn 2025. 10. 21.

 

[시간초과]

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

nums.sort()

for i in range(n):
    print(nums[i])

 

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

 

[시간 개선한 최종 코드]

import sys
n = int(sys.stdin.readline())
nums = [int(sys.stdin.readline()) for _  in range(n)]

nums.sort()

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

 

- sys.stdin.readline()

- sys.stdout.write()

- '\n'.join()

 

🚫 join()의 필수 조건

Python에서 .join() 메서드를 사용하기 위한 가장 중요한 규칙은 join()의 인수로 전달되는 반복 가능한 객체(여기서는 map(str, nums)의 결과)의 모든 요소가 문자열(string) 타입이어야 한다는 것입니다.

- 이유:

nums 리스트 안에는 정수(integer)가 들어있는데, .join()은 이 정수들을 합치기 위해 문자열로 변환하는 기능을 내장하고 있지 않습니다. .join()은 문자열들을 단순히 이어 붙이는 역할만 합니다.

 

💡 + '\n'을 붙이는 이유

  1. 일반적인 출력 규격 준수: 코딩 테스트 환경에서는 프로그램의 출력이 끝난 후 **마지막 줄에 개행 문자(줄바꿈 문자, \n)**가 있어야 깔끔하게 종료되었다고 인식되는 경우가 많습니다. 일부 환경에서는 마지막 줄에 \n이 없으면 오답 처리되거나 경고를 받을 수 있습니다.