[백준 10989] 수 정렬하기 3_Python

코뉴·2021년 1월 27일
0

백준🍳

목록 보기
12/149

https://www.acmicpc.net/problem/10989

🥚문제


🥚입력/출력


🍳코드

import sys

n = int(input())
# 주어지는 숫자는 10,000보다 작거나 같음.
# 숫자가 등장할 때 마다 해당하는 인덱스의 요소 1씩 증가
nums = [0]*10001
for i in range(n):
    nums[int(sys.stdin.readline())] += 1
# 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력
for num in range(10001):
    count = nums[num] # num이 등장한 횟수
    if count == 0:
        continue
    for i in range(count):
        print(num)

🧂아이디어

  • 수의 개수인 n의 크기가 10,000,000까지 주어질 수 있어서 긴장했는데, 10,000,000개의 요소를 저장할 수 있는 자료구조는 필요 없었다. 중요했던 것은 주어지는 수가 10,000보다 작은 자연수들이라는 것.

  • 따라서 리스트를 만든 뒤, 수가 주어지면 그 수를 인덱스로 삼는 요소의 값을 1 증가시키는 방식으로 진행했다. (수의 개수 세기!)

  • 이렇게 하면 편리한 것은, 이미 인덱스는 오름차순이므로 따로 또 정렬하지 않아도 된다는 것!

  • 리스트의 어떤 인덱스가 갖는 값이 0보다 클 때, 그 값만큼 인덱스의 값을 프린트해주면 되는 문제였다.

  • 난 정말 똑똒해!

profile
코뉴의 도딩기록

0개의 댓글