반응형
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을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
풀이
엥 이렇게 쉬워보이는 문제를 전에 왜 못풀었지 내가 그동안 성장한건가 싶었는데 시간초과 냈다.
역시 sort 짱짱이다
아마 전에는 C++로 먼저 시도해서 못풀었던 것 같다
python 코드
# 1181 단어 정렬
import sys
N = int(sys.stdin.readline())
text = []
for i in range(N):
text.append(sys.stdin.readline().strip())
# 중복 제거를 위해 set 사용
set_text = set(text)
text = list(set_text)
text.sort()
text.sort(key=len)
for i in range(len(text)):
print(text[i])
# 아래 코드는 시간 초과 난 코드 또륵 하나하나 비교했다
# for i in range(len(text)):
# for j in range(i,len(text)):
# if len(text[i]) > len(text[j]):
# text[i],text[j] = text[j],text[i]
# # print(text)
# for i in range(len(text)):
# for j in range(i,len(text)):
# if text[i] > text[j] and len(text[i]) == len(text[j]):
# text[i],text[j] = text[j], text[i]
반응형
'study > 백준' 카테고리의 다른 글
[백준] 2960. 에라토스테네스의 체 : python (0) | 2022.06.23 |
---|---|
[백준] 4949. 균형잡힌 세상 : python (0) | 2022.06.22 |
[백준] 2304. 창고 다각형 : python : C++ (0) | 2022.06.21 |
[백준] 10815. 숫자 카드 : python : C++ (0) | 2022.06.20 |
[백준] 1476. 날짜 계산 (0) | 2022.06.18 |