코딩테스트/백준 (python)

백준 / 1181번 / 단어 정렬 / python 파이썬

seulll 2024. 5. 27. 13:10

 

문제 : https://www.acmicpc.net/problem/1181

 

 

코드 (오답)

n = int(input())
s = []
for i in range(n):
    s.append(input())
s.sort(key = len)
for i in s:
    print(i)

 

중복된 단어는 하나만 남기고 제거한다는 조건을 보지 못하였고, input()을 사용해 속도가 느렸다.

 

재시도 (정답)

import sys

n = int(sys.stdin.readline())
s = []

for i in range(n):
    s.append(sys.stdin.readline().strip())
set_s = set(s)
s = list(set_s)
s.sort()
s.sort(key = len)
for i in s:
    print(i)

 

알게된 것

 

input() 대신 보다 빠른 sys.stdin.readlilne()을 사용하자

sys.stdin.readline()은 문자열로 입력받으며, 개행문자 \n을 같이 입력받는다. 따라서 따로 문자열 처리를 해줘야 한다. strip()을 이용해 개행 문자 없이 문자열을 입력받을 수 있다. strip()은 문자열 양 옆의 \n 또는 \t를 제거한다.