알고리즘/백준
[백준] 10989번: 수 정렬하기 3 / 파이썬
홍우진
2024. 12. 2. 15:34
728x90
반응형
문제 링크
https://www.acmicpc.net/problem/10989
풀이 코드
import sys
input = sys.stdin.readline #입력받는 시간을 단축시켜준다.
n = int(input())
arr = [0] * 10001 #미리 배열을 만들어준다.
for _ in range(n):
arr[int(input())] += 1 #받은 숫자를 인덱스번호로 하는 자리를 += 1 해준다.
for i in range(len(arr)):
if arr[i] != 0: #숫자가 0이 아니면(숫자가 들어온 적 있다면)
for _ in range(arr[i]):
print(i) #들어온 갯수만큼 그 숫자를 출력한다.
코드 해석
실행 시간을 줄이는것이 관건이다.
우선 sys의 sys.stdin.readline을 사용하여 input 시간을 단축한다.
배열을 미리 만들어두고
숫자 x가 들어오면 arr[x] 의 숫자가 하나씩 올라가는 방식이다.
만약 3이 들어오면
0,0,1,0,0,0,....
이렇게 카운팅이 올라가는 방식이다.
그 후 for문을 사용하여 0이 아닌 자리의 인덱스 번호를 출력하면 된다.
728x90
반응형