728x90
SMALL
문제
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
풀이
sol1 : sort를 이용한 구현
N = int(input())
word_set={input() for _ in range(N)}
word_list=list(word_set)
word_list.sort()
word_list.sort(key=len)
for word in word_list:
print(word)
N을 입력
N번 반복하며 단어를 입력받음 -> 중복을 제거하기 위해 set 자료형 활용
sort를 이용하여 사전순정렬 -> 길이순정렬
sol2 : sorted를 이용한 구현
N = int(input())
word_list = sorted({input() for _ in range(N)}, key=lambda x: (len(x), x))
for word in word_list:
print(word)
한줄로 구현하고 싶어서 바꿔봤는데 메모리랑 시간이 더걸린다(..)
덧) sort와 sorted차이
sorted(): 새로운 정렬된 리스트를 반환하지만 원본 리스트는 변경되지 않는다.-> 원본 리스트를 변경하지 않고 정렬된 결과를 얻을 수 있다.
sort(): sort() 메서드는 리스트 객체에 속한 메서드로, 리스트를 제자리에서 정렬한다. -> 원본 리스트를 직접 변경하며 반환 값은 None이다.
따라서, 만약 정렬된 리스트를 얻고 싶지만 원본 리스트를 변경하고 싶지 않은 경우에는 sorted() 함수를 사용하고, 원본 리스트를 직접 변경하여 제자리에서 정렬하고 싶은 경우에는 sort() 메서드를 사용한다!
728x90
LIST
'코테공부 > python 백준' 카테고리의 다른 글
파이썬 백준 1764 : 듣보잡 (0) | 2024.03.15 |
---|---|
파이썬 백준 1427 : 소트인사이드 (0) | 2024.03.14 |
파이썬 백준 2750 : 수 정렬하기 (0) | 2024.03.14 |
파이썬 백준 1158 : 요세푸스 문제 (0) | 2024.03.13 |
백준 10808 : 알파벳 개수 (0) | 2024.03.12 |