✔️ 문제 보기
# 1. 단어의 갯수를 입력받는다
n = int(input())
word_list = []
# 2. 입력한 n 만큼 단어를 입력받는다
for i in range(n):
word_list.append(input())
# 3. 해당 단어를 아래 조건으로 정렬시킨다
word_list.sort()
tmp = ""
# 4. 알파벳순으로 정렬했으니, 길이가 짧은 걸 앞으로 보내야함
for i in range(0, n-1):
for j in range(i,n):
if word_list[i] == word_list[j]:
word_list.pop(j)
for i in range(0, n-1):
for j in range(i,n):
if len(word_list[i]) < len(word_list[j]):
continue
if len(word_list[i]) > len(word_list[j]):
tmp = word_list[i]
word_list[i] = word_list[j]
word_list[j] = tmp
우선적으로 첫 시도엔 시간초과도 해보고 틀리기도 했는데 중복제거라는 조건을 고려하지 않았었다.
문제를 잘 읽자
개인적으로 생각해본 건
1. sort를 여러번 사용해서
2. 2중 포문을 두번 돌려서
etc..
중복도 제거하고 나니 대강 답은 나오는데 시간초과의 원인이 무엇인지 이해가 안갔다.
서치하면서 알게된 것은
길이순 정렬이 가능하다는 것
list.sort(key=len)
sys.stdin.readline()
으로 input()
보다 빠른 입력이 가능하다는 것이었다.
다만 여기서 주의할 사항은 sys.stdin.readline()
로 입력받게 될 시 마지막에 '\n'개행문자가 포함되어 rstrip()을 사용해주어야 한다는 것이다.
# 1. 단어의 갯수를 입력받는다
import sys
n = int(input())
word_list = []
# 2. 입력한 n 만큼 단어를 입력받는다
for i in range(n):
word_list.append(sys.stdin.readline().rstrip())
word_list = list(set(word_list))
# 3. 해당 단어를 아래 조건으로 정렬시킨다
word_list.sort()
word_list.sort(key=len)
for i in word_list:
print(i)
오늘도 코테 풀면서 두 개나 알아간다. 늦었지만 빨리 배워나가야지.