[1181 | python] 단어 정렬
🎉조건
알파벳 소문자로 이루어진 N개의 단어가 들어오면 정렬하는 프로그램을 작성하기
1. 길이가 짧은 단어 우선
2. 길이가 같은 경우 사전 순으로(abc...)
단 중복된 단어는 제거
🎉접근방식
먼저 N만큼 단어를 입력받고 리스트에 저장
set을 통해 중복 제거
길이에 따라 정렬. 이때 길이가 같은 경우 알파벳순으로 정렬
정리한 리스트 리턴
🎉 Solution
# 1181
N = int(input())
word_list = []
for _ in range(N):
word = input()
word_list.append(word)
word_list = list(set(word_list)) #1
word_list.sort() #2
word_list.sort(key=len) #3
for i in word_list:
print(i)
#1 : set()의 중복을 허용하지 않는 성질을 이용해 리스트 내 중복값을 제거한다.
#2 : sort()로 영어사전 순으로 정렬한다.
#3 : sort(key=len)으로 길이순으로 정렬한다. 이때 sort() 메서드는 리스트를 정렬한 후 None을 반환하고, 원래 리스트를 변경하므로 word_list에 재할당할 필요가 없다.
🎉 other Solution
좀 더 효율적인 코드를 찾아보았다. input()보다 1/10 수준으로 빠르다고 한다.
import sys
n = int(sys.stdin.readline())
lst = []
for i in range(n):
lst.append(sys.stdin.readline().strip())
lst = list(set(lst))
lst.sort()
lst.sort(key=len)
for i in lst:
print(i)
출처
'프로그래밍 > BOJ_Python 목표는 Diamond' 카테고리의 다른 글
[Python | 4153] 직각삼각형 (1) | 2023.11.28 |
---|---|
[Python | 11050] 이항계수 (0) | 2023.11.28 |
[1259 | Python] 팰린드롬수 (0) | 2023.07.25 |
[2566 | Python] 최댓값 (0) | 2023.07.15 |
[2475, 2920, 10172 | python] 검증수, 음계, 개 (0) | 2023.07.13 |