it 지식/백준문제풀이

백준 - 파이썬 2751 수 정렬하기 2 + (실버티어 느낀점)

곰종 2023. 1. 16. 14:07

문제 내용

 

문제 예시

 

내가 푼 방법

 

1
2
3
4
5
6
7
8
9
n = int(input())
num = [0]*n
 
for i in range(n):
    num[i] = int(input())
    
num.sort()
for j in num:
    print(j)
cs

처음에 리스트의 크기를 결정할 n을 입력받고, 길이 n만큼의 리스트를 생성한다.

 

그 입력받는 숫자를 for문을 사용하여 리스트의 앞쪽부터 집어넣는다. 이 과정이 끝나면 역순으로 정렬이 되어있기 때문에

sort()함수를 사용하여 올바르게 정렬한 뒤 앞에서부터 하나씩 출력한다.

 

백준 실버5가 된 후 느낀점.

 

브론즈문제들은 그냥 머리로만 풀 수 있는 문제들이 많았다.

근데 이제 실버 문제도 도전하고 solved.ac 2클래스를 찍으려고 여러가지 문제들을 풀고있는데

시간제한과 메모리제한을 신경쓰고 풀어야겠다고 생각이 슬슬 들었다.

이 문제의 같은 경우에도 문제 이름이 수 정렬인것처럼 sort()를 사용하여 풀어야하는데

나는 그냥 n이 5라고 가정하면 입력값을 어떤거를 받든 출력을 1부터 n까지 출력하게끔 코드를 짰는데

9*9를 9+9+9+9+9+9+9+9+9 하는 느낌이라 시간초과가 되면서 채점이 되지 않았다.

아무튼 느낀점은 슬슬 사고방식이나 수학능력으로 푸는 것 보다 알고리즘을 더 공부하면서 그 문제들 위주로 풀어야겠다고 생각이 들었다

 

+

이 문제는 수 정렬하기 3 인데 위 방법 말구 num 리스트를 선언하고 입력받을 때 마다 리스트에 바로 추가하니까 메모리 초과 이슈가 발생한다

1
2
3
4
5
6
7
8
import sys
n = int(input())
num=[]
for i in range(n):
    num.append(int(sys.stdin.readline()))
num.sort()
for j in range(len(num)):
    print(num[j])
cs