본문 바로가기
IT/알고리즘

1일 N알고리즘 - #39

by Sungjun_ 2020. 6. 9.

문제

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제는 위 사이트를 참고해주세요.

 


풀이

import sys
N = int(input())
lst = [0] * 100001
for i in range(N):
    x = int(sys.stdin.readline())
    lst[x] = lst[x] + 1

for i in range(len(lst)):
    if lst[i] != 0:
        for j in range(lst[i]):
            print(i)

 

저번 글과 똑같이 풀었는데

이번에는 메모리 제한이 있어서 힘들었네요.

 

먼저 문제의 최대 개수인 10,000,000개의 배열을 만들어줍니다.

10,000,000까지 반복문을 돌려야하기 때문에 미리 10,000,001개를 만들어줍니다.

 

첫 반복문에서 숫자를 입력받고

입력받은 숫자에 해당하는 index에 +1씩 해줍니다.

 

두 번째 반복문에서 0값이 아닌 경우에만

세 번째 반복문을 실행하는데

리스트의 값을 가지고 오면 현재 인덱스에 해당하는 숫자가 몇번 입력됐는지 알 수 있고

입력 된 수만큼 출력도 해줍니다.

 


결과

결과 화면

 

'IT > 알고리즘' 카테고리의 다른 글

1일 N알고리즘 - #41  (0) 2020.06.11
1일 N알고리즘 - #40  (0) 2020.06.09
1일 N알고리즘 - #38  (0) 2020.06.08
1일 N알고리즘 - #37  (0) 2020.06.06
1일 N알고리즘 - #36  (0) 2020.06.06

댓글