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 를 사용하지 않고 문제를 해결할 수 있다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ/python] 2023번 신기한 소수 (0) | 2022.02.27 |
---|---|
[BOJ/python] 14247번 나무 자르기 (0) | 2022.02.14 |
[BOJ/python] 1157번 단어 공부 (0) | 2022.01.25 |
[BOJ/python] 17219번 비밀번호 찾기 (0) | 2022.01.23 |
[BOJ/python] 10867번 중복 빼고 정렬하기 (0) | 2022.01.23 |