https://www.acmicpc.net/problem/1181
- 중복 단어 제거
- 길이 순 정렬 후 사전 순 정렬
이 두가지 과정으로 진행하면 됩니다.
import sys
n = int(input())
word_list = []
for _ in range(n):
word = sys.stdin.readline().strip()
word_len = len(word)
if [word_len, word] not in word_list:
word_list.append([word_len, word])
word_list.sort(key = lambda x : (x[0], x[1]))
for i in word_list:
print(i[1])
입력받은 단어와 단어의 길이를 리스트에 [길이, 단어] 형식으로 추가해줍니다.
sort(key = lambda) 를 이용해 길이 순으로 먼저 정렬 후 단어 사전 순으로 정렬 진행해줬습니다.
근데 이렇게 진행하면 정답이라고 나오긴 하는데 시간이 너무 오래걸려서
중복치 제거하는 방법중에 집합(set)을 활용하는 방법이 있기 때문에 그걸 이용해서 다시 한 번 풀었습니다.
import sys
read = sys.stdin.readline
n = int(read())
word_set = set()
for _ in range(n):
word_set.add(read().strip())
list = list(word_set)
list.sort(key=lambda x : (len(x), x))
for i in range(len(list)):
print(list[i])
처음엔 중복치가 들어가지 않게 word_set에 추가해주고
정렬을 해야하니까 다시 list로 바꿔서 정렬 했습니다.
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 18870 좌표 압축 (0) | 2022.09.19 |
---|---|
[Python] 백준 파이썬 10814 나이순 정렬 (0) | 2022.09.18 |
[Python] 백준 파이썬 11651 좌표 정렬하기2 (0) | 2022.09.16 |
[Python] 백준 파이썬 11650 좌표 정렬하기 (0) | 2022.09.15 |
[Python] 백준 파이썬 1427 소트인사이드 (0) | 2022.09.14 |