코딩 테스트/백준
[Python] 백준 1181 단어 정렬
위시리
2024. 12. 26. 02:08
문제 분석
- 단어들에 대해 다음 우선순위로 단어 정렬
- 길이가 짧은 순서
- 길이가 같으면 사전순
- 단, 중복 단어는 하나만 남기고 제거
코드 설계
- 진짜 비효율적인거는 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))