백준 2751 수 정렬하기 2

김민영·2023년 1월 20일
0

알고리즘

목록 보기
86/125

과정

  • 문제를 잘 읽자!
  • 정수가 주어진다고 하니 음수, 0 이 들어올 가능성을 생각해야 한다.
  • 리스트를 두 개 만들어서 음수와 0, 양수를 개수를 각각 저장했다.
  • 처음으로 메모리를 고려해보았다!
  • 입력으로 들어오는 수의 절대값은 1,000,000이라고 하니 음수, 0, 양수를 포함하면 총 2,000,001 가지의 수가 들어온다.
  • 파이썬에서 1,000,000개의 int를 갖는 메모리 사용량은 약 4MB이다.
  • 2,000,001 개의 int 리스트는 약 8MB일 것이므로 문제에서 주어진 메모리 제한인 256MB를 초과하지 않으므로 모든 수에 대해 리스트를 만들어도 될 것이라고 판단했다!

https://velog.io/@yesterdaykite/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%9D%98-%ED%81%AC%EA%B8%B0

import sys

# 2751
input = sys.stdin.readline
lst = [0] * 1000001
minus = [0] * 1000001
N = int(input())

for _ in range(N):
    inp = int(input())
    if inp >= 0:
        lst[inp] += 1
    else:
        minus[-inp] += 1
        
for i in range(1000000, -1, -1):
    for _ in range(minus[i]):
        print(i * -1)

for i in range(1000001):
    for _ in range(lst[i]):
        print(i)
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글