본문 바로가기
백준

[백준] 10989번 : 수 정렬하기 3 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 15.
728x90
반응형

 

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

어떤 정렬 방법을 사용하더라도 메모리 초과가 발생한다. 하여 메모리를 입력의 최댓값인 10,000까지로 지정하여 각 값을 입력받을 때마다 해당 위치에 개수를 증가시킨 후, 개수 별로 출력해 주는 방식으로 해결하였다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 입력할 수의 개수를 입력받는다. N = int(sys.stdin.readline())
  3. 최대 입력가능 값인 10,000까지 인덱스 번호가 있는 리스트를 생성하고 초기화한다. li = [0] * 10001
  4. 수의 개수만큼 반복하며 값을 입력받고 for i in range(N)
  5. 입력받은 값을 인덱스 번호로 갖는 위치의 값을 1 증가시킨다. li[int(sys.stdin.readline())] += 1
  6. 각 인덱스 별로 하나씩 추출하여 for i in range(10001)
  7. 만약 각 인덱스 번호의 값을 받았다면 if (li[i] != 0)
  8. 인덱스 값만큼 반복하여 해당 값을 출력한다. 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
반응형