코딩 테스트/백준

[Python] 백준 1181 단어 정렬

위시리 2024. 12. 26. 02:08

 

문제 분석

  • 단어들에 대해 다음 우선순위로 단어 정렬
    1. 길이가 짧은 순서
    2. 길이가 같으면 사전순
  • 단, 중복 단어는 하나만 남기고 제거

 

코드 설계

  • 진짜 비효율적인거는 1~50까지의 길이에 해당하는 문자열을 리스트에 넣고
  • 각 리스트를 사전 순으로 정렬한 뒤
  • 정답 리스트에 하나씩 append 하는 것

 

정답 코드

import sys
input = sys.stdin.readline

n = int(input())
words = [input().strip() for _ in range(n)]
words = list(set(words)) # 중복 단어 제거

words.sort() # 사전 순 정렬
words.sort(key=len) # 길이 순 정렮

for w in words :
    print(w)

 

다른 사람 코드 1

n = int(input())
arr = []
for _ in range(n):
    arr.append(input())
    
# 집합은 순서가 없음    
arr = list(set(arr))
arr.sort(key = lambda s : [len(s), s])
print('\n'.join(arr))

 

 

2회차 - 25.02.12

import sys
input = sys.stdin.readline

n = int(input())
words = [input().strip() for _ in range(n)]

words = sorted(list(set(words)), key=lambda x : (len(x), x))
print('\n'.join(words))