티스토리 뷰

728x90
반응형

문제

 

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

 

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

 

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

 

입력

 

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 

둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다.

 주어지는 문자열의 길이는 50을 넘지 않는다.

 

출력

 

조건에 따라 정렬하여 단어들을 출력한다.

 

풀이

 

계속 이어지는 정렬 문제다. 기본 수학 문제는 푸는 재미가 있지만 이 문제와 같이 자료형을 다루는 것은

 

언어 자체에 대해 친숙해진다는 면에서 또 다른 재미가 있는 것 같다.

 

이번에는 주어진 문자열에서 중복을 제거한 뒤

 

  1. 길이순
  2. 길이가 같다면 사전 순

으로 정렬하는 문제이다. 중복을 제거하기 위해 처음 입력을 set으로 받았고

 

입력이 끝난 뒤 set을 list로 전환해 정렬을 진행했다.

 

람다식으로 굉장히 간단하게 정렬이 끝나는 걸 보고 그저 감탄뿐..

 

파이썬 재밌네..

import sys

n = int(sys.stdin.readline())

a = set()

for _ in range(n):
    a.add(sys.stdin.readline().strip())

b = list(a)

c = sorted(b, key=lambda x: (len(x), x))

print(*c, sep='\n')
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함