백준 1181번: 단어 정렬
난이도 : 실버5

- 문제 소개


- 조건

  • 길이가 짧은 것부터 정렬
  • 길이가 같으면 사전 순으로 정렬
  • 같은 단어가 여러 번 입력될 경우 한 번만 출력

- 코드

#python
import sys

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

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

for i in char_str:
    print(i)

- 해설

코드의 시간 초과를 피하기 위해서 input() 함수보다 시간이 덜 걸리는 sys.stdin.readline()을 이용해서 입력을 받았습니다.
char_str이라는 list를 만들어주고, n개만큼 값을 추가해주었습니다.
strip()함수는 문자열의 시작과 끝에서 공백을 제거하고 공백 없이 동일한 문자열을 반환합니다. sys.stdin.readline()은 공백이나 \n같은 보이지 않는 문자열도 모두 받아오기 때문에 strip()을 붙여서 없애줍니다.
그 다음 set(char_str)을 통해 중복 문자를 없애주고, 딕셔너리가 된 char_str을 다시 list로 만듭니다.
그 다음 sort()함수를 이용해서 사전 순으로 정렬을 해주고, 다시 한번 sort(key = len)을 이용해서 길이 순으로 정렬을 해줍니다.

0개의 댓글