Post
단어 정렬(백준 1181번) | Gihun Son

단어 정렬(백준 1181번)

💡 **Check Point !

( 해당사항 ✓체크 )

  1. 막힘 없이 수월하게 풀린 문제인가? ✓

  2. 1시간이내로 풀렸던 문제인가?

  3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

  4. 시간을 써도 도무지 풀 수 없는 문제인가?

  5. 솔루션을 찾아봤는가?


난이도 체감

  1. 최상

  2. 하✓


이해도

  1. 완벽히 이해✓

  2. 다소 헷갈리는 부분들이 있음

  3. 이해 못함

문제

알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.

  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로

단, 중복된 단어는 하나만 남기고 제거해야 한다.

Untitled

나의 풀이

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.