[알고리즘] 백준 1181 : 단어 정렬 - S5

eternal moment·2023년 3월 28일
0

백준 1181 단어 정렬 - 실버5

1. 2023.03.28 풀이

import sys
input=sys.stdin.readline
li=[]

n=int(input())

for i in range(n):
    a=input().rstrip()
    li.append((a,len(a)))

li=list(set(li))
li.sort(key=lambda x:(x[1], x[0]))

for i in li:
    print(i[0])

2023.10.21 풀이

import sys
input=sys.stdin.readline

n=int(input())
arr=[]

for _ in range(n):
    arr.append(input().rstrip())

arr=list(set(arr))
arr.sort(key=lambda x:(len(x), x))

for i in arr:
    print(i)

2. Check Point

  • 람다식 정렬
    : 정렬에 우선순위 부여
    arr.sort(key=lambda x: (x[0], x[1])) 의 경우
    x[0]을 기준으로 정렬 후 x[1]로 정렬
  • set
    : 중복 제거 + 순서없는(Unordered) 집합 자료형

strings.sort(key=lambda x: (len(x),x))
처럼 글자수로도 람다식정렬가능.


3. 다른 풀이 참고

3-1

L.sort()
L.sort(key = len)
for j in L:
    print(j)

3-2

strings.sort(key=lambda x: (len(x),x))
print('\n'.join(strings))

4. 코멘트

람다식 정렬의 문법이 잠깐 헷갈렸고,
이중 리스트의 요소들을 반복문 외의 방법으로 꺼낼 수 없을지 고민했음.
나는 리스트에 글자 수를 넣은 후 정렬을 하였는데,
람다식 정렬에서는 3.다른 풀이 에서처럼 글자 수로도 정렬 가능하다는 것 알게 됨.

0개의 댓글