JiSoo's Devlog

[백준 / 파이썬] 1181번 단어 정렬 본문

코테준비

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

지숭숭숭 2024. 1. 9. 18:25

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

for i in range(n):
    w.append(input())

set_w = list(set(w))

sort_w = []
for i in set_w:
    sort_w.append((len(i), i))

re = sorted(sort_w)

for l_w, w in re:
    print(w)

 

집합 자료형 set은 중복 허용 X, 순서 X -> 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용

sort의 기본값은 오름차순 정렬, reverse=True는 내림차순

sort의 key 옵션에 지정된 함수의 결과에 따라 정렬 ex) sort(key=len)

sorted는 순서대로 정렬, 정렬된 리스트 반환

 

중복을 허용하지 않는 set을 이용해 중복 제거하고 집합 자료형은 { }로 묶이기 때문에 [ ]로 묶어주기 위해 list 사용

set을 진행한 리스트를 for문을 통해 (2, 'im'), (4, 'wait') 이런 식으로 묶어 저장

sorted 사용하면 숫자와 문자 순서대로 자동 정렬

정렬한 리스트에 각 인덱스마다 2개의 인수가 있기 때문에 for문에서 매개변수 2개를 쓰고 필요한 w만 출력

 

찾아보니 각 단어 길이가 최대 50이라 import sys를 사용해도 될 거 같다

 

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

for i in range(n):
    w = input()
    if w not in ws:
        ws.append(w)

ws.sort()
ws.sort(key=len)

for i in ws:
    print(i)

 

 

for문 안에 if문을 사용해 처음부터 중복을 받지 않고 리스트에 저장

sort로 오름차순 정렬하고 key를 사용해 길이 정렬

길이 정렬 먼저 하면 길이정렬 된 상태에서 오름차순이 돼서 주의

728x90