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
'Problem Solving' 카테고리의 다른 글
[백준] 7568 덩치 python 알고리즘 문제 (0) | 2022.04.20 |
---|---|
[백준] 11650 좌표 정렬하기 python 알고리즘 문제 (0) | 2022.04.20 |
[백준] 11050 이항 계수 python 알고리즘 문제 (0) | 2022.04.20 |
[백준] 2869 달팽이는 올라가고 싶다 python 알고리즘 문제 (0) | 2022.04.20 |
[백준] 2798 블랙잭 python 알고리즘 문제 (0) | 2022.04.20 |
댓글