https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
아주 기본적인 것들을 충실하게 물어본 문제입니다.
정렬을 하는데 조건이 2개 이상이면 이중 for 문이나 if 문을 사용해도 되지만, lambda 함수를 사용하여 깔끔하게 정리할 수 있습니다.
이 문제를 풀기 위해 알아야 하는 파이썬 기초 개념
- set 자료형은 중복을 제거할 수 있으나, 순서가 없기 때문에 list(set(arr)) 형식으로 종종 사용된다. (정렬이 필요할 때)
- set 자료형은 순서가 없기 때문에 정렬이 불가능하기 때문이다.
- 익명 함수(lambda)
- 파이썬 sort와 sorted 차이
전체코드
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))
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/C++] 1673 치킨 쿠폰 (0) | 2023.01.22 |
---|---|
[백준] #2828 사과 담기 게임 (0) | 2023.01.22 |
[백준/python] 6502 동혁피자 (0) | 2023.01.21 |
[백준/python] 1302 베스트셀러 (0) | 2023.01.21 |
[백준/C++] 6996 애너그램 (0) | 2023.01.21 |