https://www.acmicpc.net/problem/10989
[정답]
import sys
N=int(sys.stdin.readline())
num_list=[0]*10001 #입력값이 10000보다 작거나 같은 자연수이니까 0~10000이므로 10001개를 넣어주어야 한다
for i in range(N):
num=int(sys.stdin.readline())
num_list[num]+=1
for k in range(10001):
if(num_list[k]>0):
for j in range(num_list[k]):
print(k)
[오답] → 메모리 초과 (sort()함수를 쓰지 말라는건가?)
N=int(input())
num_list=[]
for i in range(N):
num=int(input())
num_list.append(num)
num_list.sort()
print(num_list)
sys모듈
파이썬 인터프리터에 관한 정보를 알 수 있음
ex)
sys.stdin.readline() : 표준 입력 장치
sys.stdout.write("~") : 표준 출력 장치
sys.version : 파이썬 버전 정보
sys.prefix : 파이썬 설치 경로
※ 백준 알고리즘에서 시간 초과의 문제를 해결하기 위해서 input()함수 대신 sys.stdin.readline()함수를 많이 사용한다.
counting 정렬
https://blog.naver.com/kdy246/222119447721
counting 정렬을 사용하는 것(=배열100001개 사용)이 sort()함수를 사용하는 것보다 메모리가 덜 든다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #2869: 달팽이는 올라가고 싶다 (0) | 2020.11.17 |
---|---|
[백준 파이썬] #2751: 수 정렬하기 2 (0) | 2020.11.17 |
[백준 파이썬] #1978: 소수 찾기 (0) | 2020.11.16 |
[백준 파이썬] #10870: 피보나치 수 5 (0) | 2020.11.16 |
[백준 파이썬] #5622: 다이얼 (0) | 2020.11.14 |