[BOJ]181:単語の並べ替え



🔒 例

>> 13
>> but
>> i
>> wont
>> hesitate
>> no
>> more
>> no
>> more
>> it
>> cannot
>> wait
>> im
>> yours

i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

🔧 に答える

1. n = int(sys.stdin.readline().rstrip())
2. 중복제거: set 자료형 활용
3. 정렬: 길이 -> 알파벳 순서로 우선순위 부여하여 정렬

🔑 答案用紙

import sys

n = int(sys.stdin.readline().rstrip())
wrds = [sys.stdin.readline().rstrip() for _ in range(n)]

# 중복제거
wrds = list(set(wrds))
# 정렬
wrds = sorted(wrds, key=lambda x:(len(x), x))
print("\n".join(wrds))

💡 コンセプト

### set: 집합 자료형
# 중복 허용 X, 순서 x
l = ['a', 'a', 'b', 'c']	# list
s = set(l)					# set
print(s)					# ['a', 'b', 'c']
l = list(s)					# 다시 리스트로 변환
print(l)					# ['a', 'b', 'c']

### lambda 인자 : 표현식
# 함수를 한줄로 표현하는 식
a = (lambda x, y: x+y)(10, 20)
print(a)	# 30

l = ['ab', 'abc', 'e', 'be']
# 알파벳 : ['ab', 'abc', 'be', 'e']
print(sorted(l))
# 단어의 길이 : ['e', 'ab', 'be', 'abc']
print(sorted(l, key=lambda x: len(x))) 
# (우선순위) 단어길이 -> 알파벳 : ['e', 'ab', 'be', 'abc']
print(sorted(l, key=lambda x:(len(x), x)))