Algorithm Study/Python

[백준 파이썬] #1181 단어 정렬

728x90
반응형

Silver V

# 1181 단어 정렬

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

풀이

num = int(input())
lis = [input() for i in range(num)]

lis.sort() # sort(), sort(key=len) 적용 순서를 바꾸면 출력값이 달라짐
lis.sort(key=len)

lis2 = []
for i in lis:
    if i not in lis2:
        lis2.append(i)

for i in lis2:
    print(i)

 

알게 된 사실

  • lis.sort() 적용한 후 lis.sort(key=len)을 적용했을 때,→ lis.sort()가 적용된 상황에서 lis.sort(key=len)이 (추가적으로) 적용된다
  • lis.sort() 적용을 제거하고 lis.sort(key=len)으로 대체되는 것 x
  • not in 을 통해 특정 값이 이미 리스트 안에 있는지 확인할 수 있다.