본문 바로가기
공부/데이터사이언스

[백준] 11단계 - 2751번 (파이썬) check!

by PYo 2022. 7. 10.
반응형

 

 

2751번

https://www.acmicpc.net/problem/2751

 

 

 

정렬문제인데, merge sort를 써도 시간초과가 계속 떠서

알아보니... sorting의 문제가 아니라 input의 문제였다.

input()을 반복적으로 이용하면 시간이 초과가 뜬다.

모듈 sys의 stdin.readline()를 이용해서 시간을 줄여야 한다.

 

주의해야 할 점은 readline()을 쓰면 개행문자(?) (\n, \t 등)가 포함된 채 입력된다는 점인데...

실제로 풀어본 결과 음...strip()을 쓰지 않아도 정답이 떴다.

왜 그런지 잘 모르겠다. 조금 더 조사해봐야 겠다.

여하튼, 일단은 정답이라고 뜬 코드는 아래와 같다.

(두 버전 다 그냥 sort 내장함수를 이용했다.) 

 

 

# 버전1 (개행문자 없애는 작업 없음.??)
import sys
n = int(input())
data = [int(sys.stdin.readline()) for i in range(n)]
data.sort()
for i in data:
    print(i)

 

 

# 버전2 (개행문자없애는 과정을 포함하고 싶어서 실시)
import sys
n = int(input())
data = [sys.stdin.readline().strip() for i in range(n)]  #strip으로 개행문자없앰.
data = list(map(int, data))
data.sort()
for i in data:
    print(i)

 

 

 


 

참고한 블로그! 

https://lute3r.tistory.com/m/240

https://mgyo.tistory.com/166?category=879767 

https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline

 

 

 

 

반응형

댓글