티스토리 뷰
📌문제
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)
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 1181 단어 정렬 (0) | 2025.02.07 |
---|---|
[백준/파이썬] 11650 좌표 정렬하기 (0) | 2025.02.06 |
[백준/파이썬] 25305 커트라인 (0) | 2025.02.04 |
[백준/파이썬] 2839 설탕 배달 (0) | 2025.02.03 |
[백준/파이썬] 1018 체스판 다시 칠하기 (1) | 2025.02.01 |