[정렬] 수 정렬하기(?)
2021. 5. 30. 23:24ㆍ백준
두 가지 방법으로 풀었는데, 나름 참신하다고 생각한 방법이 python 내장 정렬이랑 시간이 비슷하게 걸려서 놀랐다.
아래 104ms가 걸린 방법은 기존 정렬 알고리즘이랑 다르게 풀어보고 싶어서 내 나름대로 생각해서 해본 방식이다.
length = int(input())
EMPTY = "EMPTY"
dummy = [EMPTY] * 2001
for i in range(length):
num = int(input()) + 1000
dummy[num] = num
result = list(filter(lambda x: x != EMPTY, dummy))
for i in result:
print(i - 1000)
수가 나올 수 있는 범위(-1000 ~ 1000)만큼 배열을 만들고, 그 배열을 EMPTY로 채운다.
들어오는 수가 음수일 경우를 대비해서 1000을 더한다.
더한 수를 배열의 인덱스로 삼아 값을 채운다.
배열의 EMPTY 부분을 다 제거하고 남은 부분만 추리면 자동으로 오름차순 정렬.