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 | 31 |
Tags
- 해시
- 재귀
- 브루트포스
- 그리디
- 분할정복
- 투포인터
- 서브쿼리
- 그래프 이론
- DFS
- join
- 플로이드-워셜
- 에라토스테네스의 체
- 구현
- GROUP BY
- 자료구조
- BFS
- MST
- 누적합
- 다이나믹프로그래밍
- 우선순위큐
- 백트래킹
- 수학
- 다시
- 시뮬레이션
- 크루스칼
- 다익스트라
- 트리
- 그래프 탐색
- DP
- 다이나믹 프로그래밍
Archives
- Today
- Total
기록하고 까먹지 말기
1181 본문
하루 1솔씩 하자는 마인드로 백준을 시작했다.
단순하게 정렬을 하는 문제였고 풀이를 시작했다.
먼저 딕셔너리를 활용해서 단어랑 해당 단어의 길이를 저장하고
길이별로 정렬 -> 같은 길이인 것들을 뽑아내서 또 정렬하려고 했다.
그런데 아직 파이썬이 익숙하지 않은지 구현이 잘 안됐다..;;
한 30분정도 고민하다가 다른 풀이가 있는지 찾아봤고 아래 사이트를 참고했다.
[Python / 파이썬] 백준 1181번
백준 1181번 문제 풀이
velog.io
먼저 파이썬에서는 sort() 메소드를 지원하고 해당 메소드는 element의 길이에 따라서도 정렬이 가능하다.
또한 상위조건 A와 하위조건 B가 있는 경우 B를 우선 정렬한 후에 A로 정렬해야 한다는 것도 알게 되었다.
부분적으로 정렬하는 것이 아닌 전체를 통한 정렬이니까.
그런데 여기서 또 문제가 있었다. 채점하는데 퍼센트가 잘 안올라갔다.
그래서 질문들을 확인해 본 겨과 sys를 활용하는 것이 좋다는 것을 알게 되었다.
그래서 input() 대신 sys.stdin.readline()을 사용, 아래 결과를 얻었다.
import sys
n = int(sys.stdin.readline())
words = []
for i in range(n):
words.append(sys.stdin.readline().strip()) # 입력
temp = set(words) # 중복 제거
words = list(temp)
words.sort() # 단어순으로 정렬
words.sort(key = len) # 길이순으로 정렬
for i in words:
print(i)