티스토리 뷰
[문제]
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
1. 길이가 짧은 것부터
2. 길이가 같으면 사전 순으로
[내 코드]
import sys
T = int(sys.stdin.readline().rstrip())
dic = {}
for line in sys.stdin:
txt = line.rstrip()
if txt in dic.keys():
continue
dic[txt] = len(txt)
for k, v in sorted(dic.items(), key=lambda x: (x[1], x[0])):
print(k)
입력된 단어들 중 중복된 단어가 없다길래, 이를 키로 갖는 딕셔너리 구조는 어떨까 싶었다.
그 후 들어온 입력 값을 줄마다 처리하기 위해
for line in sys.stdin:
를 사용하였고,
lambda함수를 통해 여러가지의 기준으로 정렬할 수 있다는 것을 알았다!
dic.items()로 뽑아내는 순간 이미 딕셔너리 구조가 아닌 key와 value를 쌍으로 가진 iterable 객체로 변환되기 때문에, 인덱싱을 하여 기준으로 이용할 수 있는 것 같다.
print(dict_items())
>>dict_items([('but', 3), ('i', 1), ('wont', 4), ('hesitate', 8), ('no', 2), ('more', 4), ('it', 2), ('cannot', 6), ('wait', 4), ('im', 2), ('yours', 5)])
어떤 분들은 set() 메서드를 활용하여 텍스트 중복을 제거하신 분도 있었는데, 시간이 더 절약되는 것을 보았다. 나도 담부터는 데이터구조를 잘 이용해보자!
[참조]
'Etc > Algorithm & Solving' 카테고리의 다른 글
[Algorithm] 매개변수 탐색 (Parametric Search) (0) | 2022.02.27 |
---|---|
[Algorithm] 이진 탐색 (Binary Search) (0) | 2022.02.26 |
[Python] 백준 10814 #빠른 입력 받기 (0) | 2022.01.30 |
[Python] 백준 10809 (0) | 2022.01.28 |
[Python] 백준 2908 (0) | 2022.01.27 |
Comments