문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
코드
import sys
N = int(sys.stdin.readline().strip())
str_dic = {}
str_key = ''
for i in range(N):
str_key = sys.stdin.readline().strip()
str_dic[str_key] = len(str_key)
str_dic = dict(sorted(str_dic.items()))
str_dic = dict(sorted(str_dic.items(),key=lambda x:x[1]))
for key in str_dic:
print('{}'.format(key))
str_dic 딕셔너리는 key값을 문자열 형태로 입력받고, 문자열의 길이를 value값으로 합니다.
str_dic = dict(sorted(str_dic.items()))
str_dic의 key값을 기준으로 정렬합니다. 문자열의 알파벳 순으로 정렬이 됩니다.
str_dic = dict(sorted(str_dic.items(),key=lambda x:x[1]))
str_dic의 value값을 기준으로 정렬합니다. 문자열의 길이 순으로 정렬이 됩니다.
후기
파이썬이 너무 좋은 언어라 정렬 문제는 파이썬 문법만 잘 다루면 풀 수 있을 것 같습니다. 물론 저는 구글링 여러번 하긴 했습니다..ㅋㅋ 딕셔너리 관련해서 많이 찾아봤습니다. 지금은 머리가 아파서 정리 못 할 것 같고 다음에 기회가 된다면 하겠습니다.
내일은 학교에서 진행하는 프로그램에 가야해서 코드 못 올립니다. 전철 안에서 할 수 있으면 하고..?? 못 하면 안 하겠습니다.ㅎㅎ 맨날 하는 기록이 깨져서 약간 아쉽지만 아직 남은 날들이 있으니까 앞으로도 열심히 적겠습니다. ㅎㅎ
'코딩테스트' 카테고리의 다른 글
[Python] 백준 4378번 - '트ㅏㅊ;' 풀이 (1) | 2023.01.10 |
---|---|
[Python] 백준 26595번 - '전투의 신' 풀이 (1) | 2023.01.08 |
[Python] 백준 1312번 풀이 (0) | 2023.01.03 |
[Python, C] 백준 1789 풀이 (0) | 2023.01.02 |
[Python] 백준 2023 풀이 (0) | 2023.01.01 |