IT/알고리즘

[백준] 단어정렬 1181.python

Terriermon 2021. 2. 9. 17:31

 문제

- 입력받은 문자들을 1. 크기 2. 알파벳 순서로 정렬하는 것이다.

 

 

 해설 및 코드

- java로 생각했을 땐, priorityQueue를 커스텀하여 이용했을 것이다. 첫 번째로 길이를 비교하고, 같은 경우에는 알파벳으로 비교

- Python의 prioirtyQueue를 검색해보니 heapq를 사용하긴 했지만, 내가 원하는 custom을 하는 것이 불편하였다.

- 결국 문제를 검색해서 답을 보고 해버렸다ㅠㅠ 문법이나 열심히 알아야겠다.

 

import heapq

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

# 단어의 길이와 단어 담기
for _ in range(0, N):
    word = str(input())
    arr.append((len(word), word))


# 중복 제거
arr = list(set(arr))

# 정렬
# key = lambda의 형식으로
# word를 정렬하는데, 길이로 먼저 정렬한 후, 알파벳으로 정렬한다
arr.sort(key = lambda word: (word[0], word[1]))

for word in arr:
    print(word[1])

 

 

 

Python 문법 정리

- 쌍을 이뤄서 list에 담기
   괄호로 묶어준다.

arr = []
arr.append( ( len(word), word) )

 

- lambda를 이용한 sort 정렬
  key를 기준으로 정렬하는데, lambda 함수를 사용한다.
  앞의 word: 는 인자가 된다.

  뒤는 조건을 의미한다.

arr.sort( key = lambda word: (word[0], word[1]) )

# word[0]은 길이이므로, 길이로 먼저 정렬, 이후 알파벳 순서로 정렬

 

'IT > 알고리즘' 카테고리의 다른 글

[백준] 책 나눠주기 9576.python  (0) 2021.02.11
[백준] 좌표정렬하기 11650.python  (0) 2021.02.10
[백준] 보물 1026.python  (0) 2021.02.09
[백준] 에디터 1406.python  (0) 2021.02.07
[백준] 덱 10866.python  (0) 2021.02.07