티스토리 뷰

문제출처 - https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

틀린 풀이1 - 메모리 초과

n = int(input())
num_list = []
for i in range(n):
    temp = int(input())
    num_list.append(temp)

num_list.sort()

for i in num_list:
    print(i)

처음에는 아무생각없이 풀었다.

 

 

틀린 풀이2 - 런타임 에러

n = int(input())
num_list = [0] * 10001
for i in range(n):
    temp = int(input())
    num_list[i] = temp

num_list.sort()

for i in num_list:
    if i is 0:
        continue
    print(i)

다른 블로그 보고 list 크기를 정해놓으면 된다고 해서 list 크기를 10001로 정해놓고 입력받을때마다 num_list에 추가함

 

 

성공한 풀이

import sys

n = int(input())
num_list = [0] * 10001
for num in sys.stdin:
    num_list[int(num)] += 1

for i in range(10001):
    if num_list[i] is 0:
        continue
    for j in range(num_list[i]):
        print(i)

또다른 블로그 보고 표준입력으로 하길래 따라해봤다.

이번엔 입력받을때마다 해당 값의 인덱스에 하나씩 더해주고 출력할때는 해당 인덱스의 값만큼(개수만큼) 출력해줬다.

 

근데 이 코드를 에디터에서 돌리면 n만큼 입력을 받고 끝나야 되는데 계속 또다른 입력을 기다린다. 사실 맨 처음에 입력받은 n은 아무 소용이 없는거..

백준에 제출하면 맞았다고 하는뒈... 표준입력을 특정 개수만큼 받을 수 있는 방법을 더 찾아봐야겠다..

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함