728x90
10/ 20 파이썬 공부
1. 백준 10989 수 정렬하기 3
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
>>> 코드 시도 1
l =[]
for i in range(int(input())):
l.append(int(input()))
l.sort()
for i in range(len(l)):
print(l[i])
이전 '수 정렬하기' 문제에서 하던대로 코드를 짜보았으나 메모리 초과가 떴다.
다른 방식을 생각해보야아 할듯하다.
메모리 제한은 8MB.
아마도 수의 개수가 10,000,000이 최대다 보니, 길이가 10,000,000인 리스트가 메모리를 잡아먹는 듯 하다.
길이를 줄여보자.
>>> 코드 정답 1
import sys
l = [0] * 10000
for i in range(int(sys.stdin.readline())):
n = int(sys.stdin.readline())
l[n-1] += 1
for i in range(len(l)):
if l[i] != 0:
for j in range(l[i]):
print(i+1)
>>> 코드 설명
숫자 제한이 1 <= n <= 10000 이기 때문에 value가 0 이고 길이가 10000인 리스트를 만들어 준다.
그리고 숫자가 입력되면 해당 숫자 인덱스의 value를 +1 해서 숫자를 카운트한다.
마지막에 리스트의 value만큼 해당 리스트를 출력한다.
728x90
'백준 > 백준 파이썬' 카테고리의 다른 글
백준 파이썬 28214번 크림빵 (Today I Learn 2023.10.22) (0) | 2023.10.22 |
---|---|
백준 파이썬 2751번 수 정렬하기 2 (Today I Learn 2023.10.21) (1) | 2023.10.21 |
백준 파이썬 2839번 설탕 배달 (Today I Learn 2023.10.19) (0) | 2023.10.20 |
백준 파이썬 29766번 DKSH 찾기 (Today I Learn 2023.10.18) (1) | 2023.10.18 |
백준 파이썬 30031번 지폐 세기 (Today I Learn 2023.10.17) (1) | 2023.10.17 |