https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1 복사
5
5
4
3
2
1
예제 출력 1 복사
1
2
3
4
5
비슷한 문제
알고리즘 분류
문제 - 1 페이지
www.acmicpc.net
정답 코드
import sys
n = int(input())
nums = [0] * n
for i in range(n):
num = int(sys.stdin.readline())
nums[i] = num
nums.sort()
for j in range(n):
print(nums[j])
시간초과 코드
n = int(input())
nums = []
for i in range(n):
num = int(input())
nums.append(num)
nums.sort()
for j in range(n):
print(nums[j])
시간 초과가 떠서 입력받는 걸 input() 대신 sys.stdin.readline()을 사용하고,
append로 리스트에 요소를 추가하는 대신 인덱스를 이용해서 하나하나 추가해 주는 방법으로 바꿔서 제출했더니
시간 초과가 뜨지 않았다!
런타임에러는 오타가난 상태로 제출해서 그렇고..
input()으로 입력받고 리스트에 요소 추가를 인덱스를 이용해서 해줘도 시간 초과가 떴다.
sys.stdin.readline()을 이용한건 리스트에 요소 추가를 어떻게 하든 시간 초과가 나지 않았다.
반복문 안에서 입력을 받다보니 입력받는 방법이 시간에 영향을 많이 주나 보다.
https://shuding.tistory.com/16
[Python] input()과 sys.stdin.readline() 차이 / 빠르게 입력받기
보통 입력은 간단히 input()으로 받는 경우가 많지만, 한 두줄 입력받는 것이 아니고 반복문으로 여러 줄을 입력받을 때는 시간초과가 발생할 수 있다. 반복문으로 여러줄을 입력받을 때는 sys.stdin
shuding.tistory.com
'백준 > Python' 카테고리의 다른 글
[백준] 10816: 숫자 카드2_실버4 (Python) (0) | 2023.08.20 |
---|---|
[백준] 1181번: 단어 정렬_실버5 (Python) (0) | 2023.08.17 |
[백준] 5800번: 성적 통계_실버5 (Python) (0) | 2023.08.16 |
[백준] 4949번: 균형잡힌 세상_실버4 (Python) (0) | 2023.08.15 |
[백준] 5430번: AC_골드5 (Python) (0) | 2023.08.15 |