Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- 프로그래머스
- javascript
- Join
- pandas
- python
- queue
- openCV
- 백준
- Selenium
- 선그래프
- Algorithm
- 알고리즘스터디
- 정보처리기사 c언어
- Stack
- 데이터시각화
- MySQL
- programmers
- 자료구조
- dataframe
- 노마드코딩
- type hint
- aws jupyter notebook
- String Method
- 알고리즘 스터디
- Matplotlib
- NumPy
- 코딩테스트
- 파이썬
- 가상환경
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Algorithm] 백준 1181 단어 정렬 with Python 본문
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
예제 입력
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
예제 출력
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
내가 짠 코드
n = int(input())
li = []
for i in range(n):
s = input() #문자받기
t = (len(s), s) #문자의 길이와 문자를 튜플로 묶기
if t not in li: #튜플을 리스트에 삽입
li.append(t)
li.sort() #리스트 오름차순 정렬
for i in li: # 리스트 -> 튜플 -> 문자 선택해 출력
print(i[1])
잠깐 생각하다 짰는데 내가 생각해도 짧고 기발해서 놀랐다!!
바로 전에 정렬 문제를 두 개 풀었는데, 그때 썼던 튜플 자료형의 잔상이 남아 있어서 쉽게 가능했던 것 같다.
문자열의 길이로 먼저 정렬하고, 그 후 알파벳 순으로 정렬하는 게 조건이었는데, 튜플에 넣으니 한 번에 해결이 됐다.
결과에 같은 단어가 여러번 들어가면 안되기 때문에 튜플이 리스트에 들어 있지 않는 경우에만 추가하는 조건문을 넣었다.
출력은 튜플의 두번째 값, 즉 알파벳 단어값만 인덱싱해서 구현했다.
https://www.acmicpc.net/problem/1181
'DataStructure & Algorithm > 문제풀이' 카테고리의 다른 글
[Algorithm] 백준 10828 스택 with Python (0) | 2022.10.06 |
---|---|
[Algorithm] 백준 10814 나이순 정렬 with Python (0) | 2022.10.06 |
[Algorithm] 백준 11651 좌표 정렬하기 with Python (0) | 2022.10.06 |
[Algorithm] 백준 11650 좌표 정렬하기 with Python (0) | 2022.10.06 |
[Algorithm] 백준 1427 소트인사이드 with Python (0) | 2022.10.03 |