https://www.acmicpc.net/problem/2751
[정답]
import sys
N=int(sys.stdin.readline())
n_list=[]
for i in range(N):
num=int(sys.stdin.readline())
n_list.append(num)
n_list.sort()
for k in n_list:
print(k)
문제들을 풀다보면, 시간초과 에러가 많이 뜬다.
근데 시간초과 에러가 뜨면, 무엇을 고쳐야 하는지 감이 안온다...
<시간 초과>
N=int(input())
n_list=[]
for i in range(N):
num=int(input())
if num not in n_list:
n_list.append(num)
n_list.sort()
for i in range(len(n_list)):
print(n_list[i])
<시간 초과>
N=int(input())
n_list=[]
for i in range(N):
num=int(input())
if num not in n_list:
n_list.append(num)
for i in range(len(n_list)):
print(sorted(n_list)[i])
구글링을 해본 결과, 카운팅 정렬(?)과 sys를 사용하면 된다고 하는데,
아직 안 배운 부분이라 이 문제는 나중에 풀기로 하였다.
문제의 입력을 잘 읽어보면, '수는 중복되지 않는다.'라고 쓰여있다.
if num not in n_list:
n_list.append(num)
내가 짠 시간 초과 코드에 이부분을 넣었는데 그 이유는 수가 중복될 경우를 제외하기 위해 넣어주었다.
문제를 잘 읽었다면 시간 초과가 되지 않았을 일이었다.
그리고 sys.stdin.readline()함수를 사용해주면 input()함수로 할 때보다 시간이 단축된다! 이 점 기억하자!
not in & in : 멤버 연산자
in : 특정 문자열 또는 값이 문자열 또는 리스트에 속해 있는지 판별하는 연산자
ex) 'py' in 'python' → True
'ty' not in 'python' → True
sorted() & sort()
리스트를 정렬해주는 함수
sort() : 오름차순 정렬 / 본래 리스트 변경O
ex) n_list.sort()
sorted() : 오름차순 정렬 / 본래 리스트 변경X, 정렬한 새 리스트 만듦
ex) a_list=sorted(n_list)
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #2941: 크로아티아 알파벳 (0) | 2020.11.17 |
---|---|
[백준 파이썬] #2869: 달팽이는 올라가고 싶다 (0) | 2020.11.17 |
[백준 파이썬] #10989: 수 정렬하기 3 (0) | 2020.11.17 |
[백준 파이썬] #1978: 소수 찾기 (0) | 2020.11.16 |
[백준 파이썬] #10870: 피보나치 수 5 (0) | 2020.11.16 |