호기심 많은 분석가

[백준 1181] 단어 정렬 (Python) 본문

Coding/Coding Test & Algorithm

[백준 1181] 단어 정렬 (Python)

DA Hun 2021. 6. 2. 21:03
 

1181번: 단어 정렬

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

www.acmicpc.net

import sys
n = int(sys.stdin.readline().rstrip())
arr = [sys.stdin.readline().strip() for _ in range(n)]
new_arr = [(i, len(i)) for i in set(arr)]
ans_list = sorted(new_arr, key=lambda x : (x[1], x[0]))

for i in ans_list :
    print(i[0])

 이번 문제는 크게 어렵지 않다.

  1. 여러 번 입력된 경우 하나만 출력하라 했으니, 배열을 입력받아서 set으로 중복을 없애준다. 
  2. 다음 list comprehension을 통해 길이 feature를 하나 추가해준다
  3. 마지막으로 길이에 대해서 sort먼저, 그 후 사전 순으로 sorting 해주면 문제 마무리