https://www.acmicpc.net/problem/1181
- 단어 목록이 주어졌을 때, 단어를 정렬하는 프로그램을 작성
- 정렬 기준은 두 가지다
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
즉,
- 주어진 단어 목록에서 중복을 제거
- 중복이 제거된 단어 목록을 정렬(정렬의 기준은 단어의 길이, 단어 자체) 해야 한다.
1.단어 목록을 입력받고
2.중복을 제거
3.정렬된 단어 목록을 출력
순으로 코드를 작성해보자
import sys
input = sys.stdin.read
# 입력 받기
data = input().split()
n = int(data[0])
words = data[1:]
# 중복 제거
unique_words = list(set(words))
# 정렬
unique_words.sort(key=lambda x: (len(x), x))
# 결과 출력
for word in unique_words:
print(word)
- 입력 데이터를 한 번에 읽어와서 필요한 부분을 분리
- 중복을 제거하고 고유한 단어 목록을 생성
- 고유한 단어 목록을 정렬
- lambda x: (len(x), x)를 사용하여 첫 번째 기준은 단어의 길이, 두 번째 기준은 단어 자체로 설정
- 정렬된 단어 목록을 출력
lamda 함수에 대한 자세한 설명은 https://dilution0216.tistory.com/233
'Algorithm > 백준' 카테고리의 다른 글
항해99 리부트코스 알고리즘 2주 5일차 백준 7562 나이트의 이동 (0) | 2024.07.29 |
---|---|
항해99 리부트코스 알고리즘 2주 4일차 백준 13116 30번 (0) | 2024.07.27 |
항해99 리부트코스 알고리즘 2주 3일차 백준 18870 좌표 압축 (0) | 2024.07.26 |
항해99 리부트코스 알고리즘 2주 3일차 백준 1946 신입 사원 (0) | 2024.07.26 |
항해99 리부트코스 알고리즘 2주 3일차 백준 1026 보물 (0) | 2024.07.26 |