본문 바로가기
Problem Solving

[백준] 10989 수 정렬하기 python 알고리즘 문제

by DuncanKim 2022. 4. 20.
728x90

문제 10989. 수 정렬하기 3

1. 나의 코드와 발상 과정

import sys
n = int(sys.stdin.readline())
num_list = [0]*10001

for i in range(n):
    num = int(sys.stdin.readline())
    num_list[num] += 1

for i in range(10001):
    if num_list[i] != 0:
        for j in range(num_list[i]):
            print(i)

굉장히 제한된 시간과 메모리이기 때문에 리스트를 하나 더 생성해서 정렬을 한다던지 하는 방법이 활용될 수 없다.

그래서 10000까지 나오는 자연수이기 때문에 인덱스를 10000까지 가지는 빈 리스트를 만들어서

연속으로 입력되는 num값을 num_list의 인덱스로 해서 +1하는 방식으로 num_list를 만들었다.

 

그리고 원소가 0이 아닌 곳은 입력된 숫자가 하나라도 있다는 의미이며,

if 문을 통해 0이 아닌 것을 대상으로 다시 한 번 for문을 돌려서 연속으로 값을 출력한다.

그러면 오름차순으로 그 원소의 값만큼 숫자가 출력될 것이고 정렬되어 출력이 된다.

 

len()까지 쓰지 않고 돌려본 반복문이었다.

 

2. 아쉬운

시간 복잡도에 대한 공부가 더 필요할 것 같다.

728x90

댓글