본문 바로가기
Algorithm/코딩테스트 (Python)

[Baekjoon] [백준 2751번] 수 정렬하기 2

by 싱브이 2023. 11. 25.
728x90
반응형

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

 

 

 

내 생각

LinkedList문제풀다가 어려워서 정신을 맑게 할겸 정렬문제를 풀어보았다.

문제 한 줄 soooo 간단. sorted이용하면되잖아??! 하고 제출하니 시간초과였다.. 이번에도 느낀 자만하지마 제발,,

시간초과의 문제는 numbers를 읽어들일 때 input()으로는 너무 느리다는 것이었다 !!!

input()을 sys.stdin.realine()으로 바꾸니 해-결!

 

 

 

 

내 코드

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

sorted_numbers = sorted(numbers)
for num in sorted_numbers:
    print(num)

 

 

 

 

** input()와 sys.stdin.readline() 차이

  1. 입력 속도:
    • input(): 입력을 받을 때마다 내부적으로 입출력 버퍼를 비운다. 이는 작은 입력에서는 문제가 되지 않지만, 대량의 입력을 처리할 때 느릴 수 있다. 즉, 개행 문자를 삭제한 값을 리턴하기 때문에 더 느리다. 
    • sys.stdin.readline(): 내부적으로 더 빠르게 동작한다. 특히 대량의 입력을 받을 때 입출력 버퍼를 더 효과적으로 처리할 수 있다.
  2. Newline 문자 (\n) 처리:
    • input(): 사용자가 엔터를 누를 때까지 입력을 받는다. 엔터(개행 문자)도 문자열에 포함된다.
    • sys.stdin.readline(): 엔터(개행 문자)까지 포함하여 한 줄을 읽는다. 따라서 문자열 끝에 개행 문자가 포함되며, 필요에 따라 rstrip() 메소드를 사용하여 제거할 수 있다.
  3. EOF(End of File) 처리:
    • input(): 입력이 끝나면 빈 문자열을 반환한다.
    • sys.stdin.readline(): 입력이 끝나면 빈 문자열 대신 '' 대신 None을 반환한다.
728x90
반응형

댓글