프로그래밍/BOJ_Python 목표는 Diamond
[1181 | python] 단어 정렬
서이서
2023. 8. 1. 00:20
[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)
출처
[Python / 파이썬] 백준 1181번
백준 1181번 문제 풀이
velog.io