반응형
https://www.acmicpc.net/problem/1181
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
✔ 알고리즘
- 문자열
- 정렬
✔ 접근방법
1. 반복문 사용해 단어 여러개 입력받기
2. 길이순으로 정렬 후, n번째 단어와 n+1 번째 단어의 길이가 같으면 사전 순서를 비교해 정렬
→ 시간초과나 틀려버리는 문제 발생
(하나의 리스트 안에서 길이가 같은 단어끼리 묶어 정렬 알고리즘을 적용 해주는 것이 골치)
3. 사전순 -> 길이순 이렇게 정렬
['but', 'cannot', 'hesitate', 'i', 'im', 'it', 'more', 'no', 'wait', 'wont', 'yours']
['i', 'im', 'it', 'no', 'but', 'more', 'wait', 'wont', 'yours', 'cannot', 'hesitate']
먼저 사전순으로 맞춰놓은 다음에 1순위 조건인 길이순 정렬을 해주면
길이가 짧은 것부터 정렬되되 같은 길이는 사전순으로 맞춰진다.
✔ 코드
N = int(input())
s_list = list({input() for _ in range(N)})
s_list.sort() #사전순 정렬
s_list.sort(key=lambda x:len(x)) #길이순 정렬
for i in s_list:
print(i)
✔ 배운점/아쉬운점
- 단어를 특정 갯수만큼 반복해서 입력받는 방법을 한 줄 코드로 작성하는 방법을 배웠다
{input() for _ in range(N)} #set
list({input() for _ in range(N)}) #list
list(input() for _ in range(N)) #list
- sort() 에서 정렬 기준은 key = 에 작성
- 파이썬에서 lambda 식이 참 중요한데 잘 활용했으면 좋겠다 => lambda 매개변수들 : 식
반응형
'알고리즘 > 백준(BOJ) 문제 풀이' 카테고리의 다른 글
[Python]백준 #1018 체스판 다시 칠하기 (0) | 2022.07.03 |
---|---|
[Python]백준 #1259 팰린드롬수(class2+) (0) | 2022.03.13 |
[Python]백준 #11050 이항계수1(class2+) (0) | 2022.03.12 |
[Python]백준 #10814 나이순 정렬(class2+) (0) | 2022.03.12 |
[Python]백준 #10250 ACM호텔(class2+) (0) | 2022.03.12 |