https://www.acmicpc.net/problem/10989
문제 해석
N개의 수가 주어지고 이를 오름차순으로 정렬하는 프로그램이다.
코드
input = __import__('sys').stdin.readline
n = int(input())
arr = [0] * 10001
for _ in range(n):
t = int(input())
arr[t] += 1
for i in range(10001):
if arr[i] != 0:
for j in range(arr[i]):
print(i)
문제 풀이
이 정렬문제에서 sorted 함수를 사용하여 정렬하게 되면 시간초과나 메모리초과가 생기게 된다.
따라서 미리 배열을 만들고 숫자가 입력되면 1씩 증가시켜 출력때 배열의 값만큼 출력시키면 된다.
주어진 숫자는 10000보다 작거나 같은 자연수이기 때문에
arr = [0] * 10001
의 배열을 만들어 준다.
입력을 받고 입력받은 숫자의 인덱스에 위치한 값을 1 증가시켜준다.
arr[t] += 1
이후 arr배열의 값만큼 인덱스값을 출력시키면 sorted 를 사용하지 않고 문제를 해결할 수 있다.
원문
https://ddingmin00.tistory.com/20
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 5533번 유니크 (0) | 2022.02.14 |
---|---|
<5주차> [BOJ / C++] 8611번 - 팰린드롬 숫자 (0) | 2022.02.13 |
[백준 / python] 2566번 최댓값 (0) | 2022.02.12 |
[백준/C++] 2493번 탑 (1) | 2022.02.09 |
[백준/C++] 14593번 2017 아주대학교 프로그래밍 경시대회 (Large) (1) | 2022.02.07 |