본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 수 정렬하기 : 2750번 - Python

728x90
반응형

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

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

 

 

문제를 풀면서 몰랐던 개념

 

 [Python] 리스트 오름차순으로 정렬하기

-> sorted 함수를 사용해서 정렬!

alist = [4, 2, 1, 3, 5]

alist = sorted(alist, reverse = False) # 오름차순 정렬
print(alist)

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

alist = sorted(alist, reverse = True) # 내림차순 정렬
print(alist)

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

 

 

 

문제의 접근 방법

 

- 입력 받을 숫자의 개수 n개 입력받기

- 입력 받은 숫자들을 정렬하기

- 출력 형식에 맞춰서 정렬된 원소들 출력하기

 

 

내가 막혔던 부분

 

(1) 출력 형식이 한 줄에 숫자 하나씩 출력되게 해야하는데, 리스트를 만들어서 원소를 추가했더니 처음에는 리스트 형식으로 print되었다. 그래서 리스트의 개수만큼 반복하는 for문을 생성하여 인덱스 번호로 출력되게 만들어주었다. 

(2) 리스트 원소들을 오름차순으로 정렬하는 방법.

 

 

 

문제 풀이 방법

 

입력받을 숫자의 개수 n개 입력 받기 -> 반복문을 이용해서 n번만큼 숫자 입력받기 -> 입력받을 때마다 미리 만들어놓은 리스트 alist에 추가하기 -> sorted 함수를 이용해서 alist 원소 정렬하기 -> 정렬한 원소들을 한 줄에 하나씩 출력해주기(이 때도, 반복문을 사용해서 줄 바꿈이 일어나게 출력해준다.)

 

 

 

소스코드

n = int(input())

alist = []

if (1<=n<=1000):
    for i in range(n):
        num = int(input())
        alist.append(num)
        
    alist = sorted(alist, reverse=False)
    
    for i in range(len(alist)):
        print(alist[i])

else:
    print("n의 범위는 1<=N<=1000 입니다.")
728x90
반응형