https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다.
예제 입력 1
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
예제 출력 1
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
풀이
설명
- 문자열을 받아올 때, strip() 함수를 사용하여 공백을 제거한다.
- set() 함수를 사용하여 집합으로 묶고 리스트에 넣는다.
- sort() 함수를 통해 리스트 요소를 먼저 알파벳 순으로 정렬한 후, 길이 순으로 정렬하여 출력한다.
코드
import sys
input = sys.stdin.readline
N = int(input())
string = []
for i in range(N) :
string.append(input().strip())
string_set = set(string)
string = list(string_set)
string.sort() # 리스트 요소를 알파벳 순으로 정렬
string.sort(key=len) # 리스트 요소를 길이 순으로 정렬
for i in string :
print(i)
https://techblogs.tistory.com/18
[Python] sort(), sorted()를 이용한 리스트 정렬
sort() 함수 list.sort() 메서드는 리스트 객체 자체를 정렬해주는 함수이다. 리스트에서만 사용 가능하며 매개변수로 reverse를 받는다. 기본적으로 리스트를 오름차순으로 정렬해준다. 매개변수인 re
techblogs.tistory.com
https://techblogs.tistory.com/23
[Python] set() 함수 : 집합
set() 함수 set()은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다. set() 키워드를 그대로 사용하거나 중괄호({ })를 사용하여 표현 가능하다. 중괄호 사용 시 중괄호 자체만으로는 dict를
techblogs.tistory.com
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm] 백준 1152번 단어의 개수 (Python) (0) | 2023.02.19 |
---|---|
[Algorithm] 백준 1032번 명령 프롬프트 (Python) (0) | 2023.02.19 |
[Algorithm] 백준 1157번 단어 공부 (Python) (0) | 2023.02.17 |
[Algorithm] 백준 1009번 분산 처리 (Python) (0) | 2023.02.16 |
[Algorithm] 백준 1008번 A/B (Python) (0) | 2023.02.15 |