Algorithm/Problems

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

공부좀하시졍 2022. 11. 9. 09:31

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

import sys

read = sys.stdin.readline

words = []
n = int(read())

for _ in range(n):
  word = input()
  leng = len(word)
  words.append((leng, word))

set_words = list(set(words))

set_words.sort(key=lambda x: (x[0], x[1]))

for word in set_words:
  print(word[1])

입력받은 단어와 그 단어의 길이를 구해 words 리스트에 쌍으로 묶어서 저장해주었다.

그리고 set함수를 이용해 중복 제거를 해준 후 sort함수를 이용해 정렬해주었다. key 매개변수를 이용해 길이로 먼저 정렬한 후 글자로 정렬되게 했다.

 

** 처음에 leng 변수 이름을 len으로 설정했더니 오류가 발생했다.. 이거 해결하는데 시간이 꽤 많이 걸렸음..... 변수이름 설정 잘합시당.....😅