https://www.acmicpc.net/problem/20920
나의 답 (틀림)
from collections import defaultdict
n, m = map(int, input().split())
strings = [input() for _ in range(n)]
r_string = defaultdict(int)
p_result = []
for i in strings:
if len(i) >= m:
r_string[i] += 1
r_string = dict(sorted(r_string.items(), key=lambda x: x[0]))
r_string = dict(sorted(r_string.items(), key=lambda x: len(x[0]),reverse=True))
r_string = dict(sorted(r_string.items(), key=lambda x: x[1],reverse=True))
for k,v in r_string.items():
print(k)
전체 값을 기준으로 우선순위 거꾸로 해서 소트를 3번 했다.
테스트 코드 상으로는 예제 답처럼 나왔는데 계속 시간 초과가 떴다.
아무래도, sort 한 값 중에 sort 하고.. sort 한 값 중에 sort를 해야할 듯 싶다?.. 아니면 다른 숨겨진 케이스가 있다던가.
다른 사람 답
import sys
N, M = map(int, sys.stdin.readline().split())
d = {}
for _ in range(N):
word = sys.stdin.readline().rstrip()
if (len(word) < M):
continue
if (word in d):
d[word] += 1
else:
d[word] = 1
d = sorted(d.items(), key = lambda x : x[0])
d = sorted(d, key = lambda x : len(x[0]), reverse=True)
d = sorted(d, key = lambda x : x[1], reverse=True)
for i in d:
print(i[0])
답을 보니, for문을 여러번 돌려서 오류가 난 것 같기도 하다.
한 번의 for문에 처리할 수 있다면 처리를 해야겠다.
'코딩테스트' 카테고리의 다른 글
[Python] 백준 - 제로 (0) | 2024.05.21 |
---|---|
[Python] 백준 - 연구소 (0) | 2024.05.18 |
[Python] 백준 - 덩치 (0) | 2024.05.14 |
[Python] 백준 - 퇴사 (0) | 2024.05.13 |
[Python] 백준 - 한수 (0) | 2024.05.13 |