KKG
Programming
KKG
전체 방문자
오늘
어제
  • 전체 글 보기 (84)
    • 회고 (9)
    • Bootcamp (19)
    • Error Handling (2)
    • Kotlin (1)
    • Java (19)
      • Java (14)
      • Spring (1)
      • JPA (2)
      • Link (2)
    • Python (5)
    • 알고리즘 (20)
      • 알고리즘 (4)
      • 백준 (14)
      • 프로그래머스 (1)
      • Link (1)
    • SQL (5)
      • SQL (1)
      • MySQL (4)
    • Web (2)
    • etc (1)

블로그 메뉴

  • 태그
  • 방명록
  • 깃허브

인기 글

티스토리

hELLO · Designed By 정상우.
KKG

Programming

알고리즘/백준

[Python] 백준(BOJ) 10989번 수 정렬하기 3 (계수 정렬)

2022. 1. 29. 14:32
 

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

10
5
2
3
1
4
2
3
5
1
7

예제 출력 1

1
1
2
2
3
3
4
5
5
7

 

코드

import sys
input = sys.stdin.readline
print = sys.stdout.write
arr = [0]*10000
for i in range(int(input())): # 1~10000까지 각 숫자의 개수 구하기
    arr[int(input())-1] += 1
    
for i in range(10000):
    for j in range(arr[i]): # 각 숫자의 개수만큼 반복, 숫자의 개수가 0이면 무시
        print(str(i+1)+'\n')

계수 정렬은 O(n+k)의 시간복잡도를 가지기 때문에 숫자의 최댓값 k가 작을 때만 사용 가능

( n = 10이고 k가 100이면 시간복잡도는 O(n²) )

    '알고리즘/백준' 카테고리의 다른 글
    • [Python] 백준(BOJ) 9663번 N-Queen(백트래킹)
    • [Python] 백준(BOJ) 2232번 분해합 (부르트포스)
    • [Python] 백준(BOJ) 2798번 블랙잭 (브루트포스)
    • [Python] 백준(BOJ) 11729번 하노이 탑 이동 순서 (재귀)

    티스토리툴바