백준(Python)/문자열

[코딩 테스트 연습(파이썬/Python)] 백준 1181번 _ 단어 정렬

mingchin 2021. 12. 17. 03:32
728x90
반응형

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

[문제]

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

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

 

[입력]

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

[출력]

조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.

 

[아이디어]

1) 여러 조건에 대해 sort() 혹은 sorted()를 사용하고 싶은 경우 lambda x에 대한 인자로 여러 함수를 던져주면 된다.

 

n =int(input())
s = [input() for _ in range(n)]
s = list(set(s))
s.sort(key =lambda x: (len(x),x))
for x in s:
    print(x)

 

728x90
반응형