단어 정렬(백준 1181번)
💡 **Check Point !
( 해당사항 ✓체크 )
막힘 없이 수월하게 풀린 문제인가? ✓
1시간이내로 풀렸던 문제인가?
1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
시간을 써도 도무지 풀 수 없는 문제인가?
솔루션을 찾아봤는가?
난이도 체감
최상
상
중
하✓
이해도
완벽히 이해✓
다소 헷갈리는 부분들이 있음
이해 못함
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
N=int(input())
answer_list=[]
for _ in range(N):
I=sys.stdin.readline().strip()
tmp_tuple=(len(I),I)
if tmp_tuple in answer_list:
continue
answer_list.append(tmp_tuple)
answer_list.sort()
for ans in answer_list:
print(ans[1])
sort()
를 하든,heapq()
를 이용하든, 정렬할 때의 원소가 tuple과 같은 여러개의 원소를 갖는 값이면, 첫번째 원소를 기준으로 정렬한 후, 첫번째 원소가 같은 것끼리는 그 다음 원소를 비교하여 정렬한다.- 이 문제에서 잘 봐야 했던 조건은 “단, 중복된 단어는 하나만 남기고 제거해야 한다.” 이다.
This post is licensed under CC BY 4.0 by the author.