티스토리 뷰
📌문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
📌풀이
set을 사용하여 입력받은 단어들을 저장하면 자동으로 중복이 제거됨
sorted(words, key=lambda x: (len(x), x))
sorted() 함수는 튜플을 기준으로 정렬
key 인자가 튜플 (a, b)인 경우, 정렬은 튜플의 첫 번째 요소를 기준으로 정렬하고, 첫 번째 요소가 같으면 두 번째 요소를 기준으로 정렬
따라서 길이순 정렬, 길이가 같다면 사전순 정렬이 됨
📌코드
n = int(input())
words = set() # 중복 제거를 위해 set 사용
for _ in range(n):
words.add(input()) # 중복 자동 제거
sorted_words = sorted(words, key=lambda x: (len(x), x))
for word in sorted_words:
print(word)
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 18870 좌표 압축 (0) | 2025.02.10 |
---|---|
[백준/파이썬] 10814 나이순 정렬 (0) | 2025.02.09 |
[백준/파이썬] 11650 좌표 정렬하기 (0) | 2025.02.06 |
[백준/파이썬] 10989 수 정렬하기 3 (0) | 2025.02.05 |
[백준/파이썬] 25305 커트라인 (0) | 2025.02.04 |