본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 2751 : 수 정렬하기 2 (Python / 파이썬)

by 함께 공부해요 2020. 9. 27.


수 정렬하기 2 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

2 초

256 MB

90105

26371

16992

31.173%

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개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

알고리즘 분류

정렬


 

백준 알고리즘 # 2751번 : 수 정렬하기 2

출처:  https://wikidocs.net/16041

# 풀이 1
n = int(input())
ls = []

for _ in range(n):
    ls.append(int(input()))

s = sorted(ls)

for i in s:
    print(i)

# 풀이 2
n = int(input())
ls = []

for i in range(n):
    ls.append(int(input()))

for i in reversed(ls):
    print(i)

풀이

문제를 보면 정말 쉬운데 시간초과가 3번이나 났어요..(당황)

3번째 풀이를 하다가 뭔가 이상해서 구글링을 해보니

언어 설정을 "Python 3"이 아닌 "PyPy3"으로 해야된다 하더라구요..!!😂

PyPy에 대해서 궁금하신 분들은 아래 출처에 가서 확인해보세요🤞

출처:  https://namu.wiki/w/PyPy

자 이렇게 시간초과된 이유도 알았으니 간단한 풀이를 하자면

변수 n으로 테스트 케이스의 수 5개를 받고, 변수 ls를 설정해서 [] 리스트로 초기화시켜줬어요.

다음으로 for문으로 n의 수만큼 반복을 해주면서, 테스트 케이스의 수를

ls로 설정한 []에 반복될 때마다 append(추가)했습니다.

그리고 풀이 1에서는 이것을 s라는 변수를 새로 설정해서 sorted(ls)로

기본적으로 오름차순으로 정렬되는 함수를 사용했구요.

풀이 2에서는 정렬하는 함수를 따로 쓰지 않고 reversed를 이용해서 뒤집어서 출력해주면 끄-읏!👏

(풀이 2처럼 하게되면 정렬한 것이 아니라 주 목적에 위배되는 것 같아요.)

세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏

 

wook2124/Algorithm-Test

Practice algorithm. Contribute to wook2124/Algorithm-Test development by creating an account on GitHub.

github.com

최종 소스코드

댓글