https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
코드 정답
import sys
n = int(sys.stdin.readline())
li = []
for i in range(n):
li.append(int(sys.stdin.readline()))
li.sort()
for i in range(n):
print(li[i])
풀이
1행 : 시간제한이 2초로 걸려있는 문제이기에 input() 명령어를 사용하게 된다면 시간제한에 걸릴 수 있다. 그래서 input() 보다 빠른 명령어인 sys.stdin.readline() 명령어를 사용해주기 위해 import sys 를 작성해 사용가능하게 만들어준다.
import sys
3~4행 : sys.stdin.readline() 을 이용하여 input() 처럼 문자를 받아낸다. 이후 int() 를 이용하여 기본 char 형식을 정수형으로 바꿔주며, 입력값을 변수 n 에 저장한다. li 변수를 리스트 형식으로 지정한다.
n = int(sys.stdin.readline())
li = []
6~8행 : i 가 0부터 n 의 값에 다다를 때까지 반복된다. 반복이 될 때마다 i 의 값이 1씩 증가한다. 반복이 될 때마다 입력을 받은 값을 리스트 li 에 저장한다. 반복문(for)이 끝나게 된다면 리스트 형식으로 저장된 값들을 오름차순으로 정렬시킨다.
for i in range(n):
li.append(int(sys.stdin.readline()))
li.sort()
10~11행 : 다시 한 번 for 문을 이용하여 n 만큼 반복시킨다. 반복이 될 때마다 리스트의 처음 저장된 값(li[0]) 부터 리스트의 마지막 값(li[n-1])까지 저장된 값들이 출력된다.
for i in range(n):
print(li[i])
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 정렬 - 2108번 (Python) (0) | 2023.02.09 |
---|---|
[백준] 정렬 - 10989번 (Python) (0) | 2023.02.08 |
[백준] 정렬 - 25305번 (Python) (0) | 2023.02.06 |
[백준] 정렬 - 2587번 (Python) (0) | 2023.02.06 |
[백준] 정렬 - 2750번 (Python) (0) | 2023.01.08 |