코드연습/BOJ
BOJ 1181 : 단어 정렬
AI 로밧
2022. 4. 26. 13:03
728x90
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
풀이
문제를 보고 딱 든 생각은 'Nested List'응용 문제라고 생각했다. 처음에 시작을 List 내부 List로 구성해서 시간 초과가 발생했었다. 이후 Dictionary 타입을 이용해서 문자를 정렬했는데, 이 역시 풀이에서 2중 For문을 사용하여 시간 초과가 발생했다. 최종적으로 아래 코드와 같이 Key : 문자열 길이 Value : 문자로 구성되는 자료 구조를 택함으로써 시간 내 문제를 풀이하였다.
import sys
if __name__ == '__main__':
N = int(input())
data_list = {}
for _ in range(N):
literal, w = sys.stdin.readline().split('\n')
if len(literal) in data_list:
data_list[len(literal)].append(literal)
else:
data_list[len(literal)] = [literal]
data_list = dict(sorted(data_list.items(), key = lambda item: item[0]))
for k,v in data_list.items():
v = sorted(set(v))
for d in v:
print(d)