1181: 단어 정렬 - Python

beaver.zip·2024년 5월 28일
0

[알고리즘] 백준

목록 보기
5/45

문제

https://www.acmicpc.net/problem/1181

풀이 (정답)

import sys
n = int(input())
arr = [i.strip() for i in sys.stdin.readlines()] # 여러 줄을 한 번에 입력 받고, 개행 문자 strip.
arr = list(set(arr)) # 중복 제거

arr.sort() # 알파벳 순으로 정렬 후
arr.sort(key = lambda x: len(x)) # 길이 순으로 정렬
for a in arr:
    print(a) # 출력

정렬 알고리즘을 제대로 공부해보지 않아서
다중 if문으로 기괴하게 코드를 짜다가 실패해
내 실력에 절망하고 있었다.

실버에서 막히는 것을 보아 아무래도 우선 알고리즘 강의를 듣는 게 좋을 것 같아서
이코테를 수강하던 중, lambda 함수를 보고 풀이가 떠올랐다.

이때

arr.sort(key=lambda x: len(x)) # 대신
arr.sort(key=len) # 로 쓸 수 있다!

다른 사람들도 비슷하게 푼 것 같다.


오늘의 교훈

  1. sort key를 사용해 정렬 기준을 설정할 수 있다.
  2. 상위 조건 A와 하위 조건 B가 있으면, B -> A 순으로 정렬해야 한다.
profile
NLP 일짱이 되겠다.

0개의 댓글