[백준] 10989번(수 정렬하기 3)

·2023년 2월 6일

백준 문제풀이

목록 보기
39/159

백준 10989번


최종 제출 코드(오답)

import sys
input = sys.stdin.readline

num = int(input())
num_list = [0]*num

for i in range(num):
  num_list[i]=int(input())

num_list.sort()

for i in range(num):
  print(num_list[i])
  • 빈 배열에 원소값을 append()하는 방법말고, 0을 넣어놓고 업데이트 하는 방법 사용
  • 메모리 초과

다른 사람이 작성한 코드

import sys
n = int(sys.stdin.readline())
b = [0] * 10001
for i in range(n):
  b[int(sys.stdin.readline())] += 1
    
# range(10001)임에 주의!
# 전 인덱스를 다 돌아야 한다
for i in range(10001):
  if b[i] != 0:
    for j in range(b[i]):
      print(i)
  • 입력값의 범위가 10,000까지임 & 배열 인덱스를 활용
  • 정렬에 sort()를 사용하지 않음( => 코드 실행 시간이 줄어든 요인)
  • 중복된 값은 원소의 값을 1씩 증가시켜 입력 데이터 중에 해당 원소값이 몇 번 입력됐는지 알 수 있음
  • 조건문도 적절히 활용하면 O(n)을 줄이기 가능

출처

profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글