티스토리 뷰

📌문제

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

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

 

📌풀이

메모리 제한이 있기 때문에 sort와 input으로 입력 받기 사용 불가

대신 sys.stdin.readline()으로 입력 받기

 

N개의 수는 10000보다 작거나 같은 자연수라고 했으므로 크기가 10001인 배열을 선언

입력받은 숫자를 배열의 인덱스로 보고 해당 배열의 값 증가(즉, 횟수)

반복문을 돌려서 배열 값이 0이 아닐 경우에 배열 값(횟수) 만큼 다시 반복문을 돌려 입력받은 숫자(인덱스)를 출력

 

📌코드

import sys

n = int(sys.stdin.readline())
arr = [0] * 10001

for i in range(n):
    num = int(sys.stdin.readline())
    arr[num] += 1

for i in range(10001):
    if arr[i] != 0:
        for j in range(arr[i]):
            print(i)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함