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 |