백준
[백준] 10989번 : 수 정렬하기 3 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 15. 17:48
728x90
반응형
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
어떤 정렬 방법을 사용하더라도 메모리 초과가 발생한다. 하여 메모리를 입력의 최댓값인 10,000까지로 지정하여 각 값을 입력받을 때마다 해당 위치에 개수를 증가시킨 후, 개수 별로 출력해 주는 방식으로 해결하였다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 입력할 수의 개수를 입력받는다. N = int(sys.stdin.readline())
- 최대 입력가능 값인 10,000까지 인덱스 번호가 있는 리스트를 생성하고 초기화한다. li = [0] * 10001
- 수의 개수만큼 반복하며 값을 입력받고 for i in range(N)
- 입력받은 값을 인덱스 번호로 갖는 위치의 값을 1 증가시킨다. li[int(sys.stdin.readline())] += 1
- 각 인덱스 별로 하나씩 추출하여 for i in range(10001)
- 만약 각 인덱스 번호의 값을 받았다면 if (li[i] != 0)
- 인덱스 값만큼 반복하여 해당 값을 출력한다. for j in range(li[i]): print(i)
반응형
3. 소스코드
import sys
N = int(sys.stdin.readline())
li = [0] * 10001
for i in range(N):
li[int(sys.stdin.readline())] += 1
for i in range(10001):
if (li[i] != 0):
for j in range(li[i]):
print(i)
728x90
반응형