반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
문자열을 정렬하는 문제입니다. 길이가 짧은 순으로 정렬하되, 길이가 같을 때는 사전 순으로 정렬합니다.
2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학
정렬 기준이 2가지이지만, 순서는 없습니다. '짧은 길이대로 정렬하고 사전 순으로 정렬'한 것과 '사전 순으로 정렬 후 짧은 길이대로 정렬'한 결과는 같습니다.
3. 코드
import sys
input = sys.stdin.readline
N = int(input())
wordlist = []
for i in range(N):
word = input().rstrip()
wordlist.append([len(word), word])
wordlist.sort()
문자열의 길이까지 고려하기 위해서, 2차원 리스트를 이용합니다. 첫 번째 항목에 문자열의 길이를 저장하고, 두 번째 항목에 문자열을 저장합니다.
이후, sort() 함수를 사용하면 자동으로 1, 2항목 기준으로 오름차순 정렬이 됩니다.
tmp = ''
for i in wordlist:
if tmp == i[1]:
continue
tmp = i[1]
print(i[1])
중복 제거를 위해, 이전 항목과 비교합니다. 똑같으면 출력하지 않고 넘어갑니다.
cf) 람다식을 이용한 sort 정렬을 하면 이차원 리스트 없이 정렬할 수 있습니다.
wordlist.sort(key=lambda x:len(x)): key 파라미터는 정렬 기준이며, len(x)에 따라 정렬됩니다.
cf) 집합 set을 활용하면 중복 항목을 쉽게 제거할 수 있습니다.
set(wordlist)
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 4153 직각삼각형 - Python (0) | 2022.02.02 |
---|---|
[구현/수학] 백준 10773 제로 - Python (0) | 2022.02.02 |
[구현/수학] 백준 1427 소트인사이드 - Python (0) | 2022.02.01 |
[구현/수학] 백준 2751 수 정렬하기 2 - Python (0) | 2022.02.01 |
[그리디/Greedy] 백준 11047 동전 0 - Python (0) | 2022.01.31 |
댓글