💻STUDY/BOJ
[BOJ] 1181. 단어 정렬 (Python)
- 코딩 초보
1181. 단어 정렬
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
파이썬의 sort()는 문자열까지 정렬해준다!
단, 중복은 제거해야하므로 set()을 사용하였다. set을 사용하는건 이번이 처음이라서 ( https://wikidocs.net/1015 ) 를 참고하였다. set(리스트)를 하면 인덱스 접근이 불가능하므로 다시 list로 바꾸어주어야한다. 리스트로 바꾸고 다시 알파벳순(사전순)으로 나열한 다음, 문자열의 길이를 기준으로 정렬해주어야 하므로 key값에는 len을 주었다.
import sys
n=int(sys.stdin.readline())
lst=[]
for _ in range(n):
s=sys.stdin.readline().strip()
lst.append(s)
lst=list(set(lst))
lst.sort()
lst.sort(key=len)
for i in lst:
print(i)
'💻STUDY > BOJ' 카테고리의 다른 글
[BOJ] 10998. 팰린드롬인지 확인하기 (C) (0) | 2022.02.23 |
---|---|
[BOJ] 2563. 색종이 (C) (0) | 2022.02.22 |
[BOJ] 10816. 숫자 카드 2 (Python) (0) | 2022.02.20 |
[BOJ] 9625. BABBA (C) (0) | 2022.02.19 |
[BOJ] 11655. ROT13 (C) (0) | 2022.02.17 |
댓글