홍우진의 개발 일기장

[백준] 10989번: 수 정렬하기 3 / 파이썬 본문

알고리즘/백준

[백준] 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
반응형
Comments