이번 문제는 수 정렬하는 문제인데 sort 함수를 이용해서 하면 간단할거 같다고 생각을 하고 코드를 짰다.
n = int(input())
number = []
for i in range(n):
num = int(input())
number.append(num)
number = sorted(number)
for i in number:
print(i)
sort 함수를 이용해서 풀었더니 메모리 초과 에러가 발생하였다. 문제를 보니깐 메모리가 8MB 밖에 주어지지 않았다.
for문을 돌면서 append함수를 사용하게되면 메모리가 계속 할당되어 효율적이지 못하게 메모리를 사용한다고 한다.
문제에서 주어진 입력값이 10000보다 작거나 같은 수이기 때문에 배열 인덱스를 생각해서 10001개의 리스트를 만들고
안에 0의 값으로 초기화를 해주었다.
그 다음 아래 for문을 통해서 입력받은 숫자값을 가진 리스트 인덱스에 1을 증가시킨다.
그 다음 for문에서는 입력받은 리스트값이 0이 아닌경우에 그 인덱스 값만큼 값을 출력하는 방식으로 하였다.
이렇게 하면 1번 이상 입력된 값들도 중복으로 잘 출력이 되고 메모리 초과 에러문제도 해결 할 수 있었다.
import sys
input = sys.stdin.readline
n = int(input())
number = [0] * 10001
for i in range(n):
num = int(input())
number[num] += 1
# print("=========")
for i in range(10001):
if number[i] != 0:
for j in range(number[i]):
print(i)
'백준 문제풀이' 카테고리의 다른 글
[백준 2581번 문제] 소수 (0) | 2022.08.02 |
---|---|
[백준 1978번 문제] 소수 찾기 (0) | 2022.07.29 |
[백준 10815번 문제] 숫자카드 (0) | 2022.05.20 |
[백준 11650번 문제] 좌표 정렬하기 (0) | 2022.05.19 |
[백준 2751번 문제] 수 정렬하기2 (0) | 2022.05.12 |