본문 바로가기

Algorithm/BaekJOON(Python)

[백준/정렬/2751] 수 정렬하기 - 2

2750과 같은 문제이나 N의 범위가 다르다. (1 ≤ N ≤ 1,000)

2750과 동일한 코드를 제출하면 시간초과가 뜬다.

1. for 리스트 헷갈려 하지 말고 좀 더 익숙해지자

for 변수 in 리스트:
     반복할 코드

2. 여러 줄을 입력받거나 반복문을 통해 입력 받는 경우에는 sys.stdin.readline() 사용

import sys

# 한 줄 입력 받을때
a = sys.stdin.readline()

# 한 개의 정수 입력 받을 때
a = int(sys.stdin.readline())

# 공백을 기준으로 나눈 후 int로 변환하여 a,b에 저장
a, b = map(int, sys.stdin.readline().split()) 

# strip() 문자열의 맨 앞, 맨 끝 공백 제거
a = sys.stdin.readline().strip()
print("Input :", a)

Input : 1 2 3 4 5

# N줄의 문자열을 입력 받아 리스트에 저장할 때
import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
print(data)

5
1
2
3
4
5
['1', '2', '3', '4', '5']

3. for 리스트 헷갈려 하지 말고 좀 더 익숙해지자

list.sort()      리스트 자체를 오름차순으로 정렬
sorted(num_list) 새로운 정렬 리스트 반환 

이미지 클릭시, 문제로 이동됩니닷 :)

sol

import sys

# 입력 받을 길이
x = int(sys.stdin.readline())
num_list = []

# x만큼 루프돌리면서 입력 받는다
for i in range(x):
    y = int(sys.stdin.readline())
    num_list.append(y)

# 정렬 후 출력
num_list.sort()
for j in num_list:
    print(j)