반응형
코드
from collections import defaultdict
n = int(input())
dic = defaultdict(int)
word = []
for _ in range(n):
word.append(input())
for w in word:
for i in range(len(w)):
dic[w[i]] += 10**(len(w)-i-1)
n_list = []
for i in dic:
n_list.append(dic[i])
n_list.sort(reverse=True)
num = 9
ans = 0
for i in n_list:
ans += i*num
num -= 1
print(ans)
설명
높은 자릿수에 있는 알파벳이 더 높은 숫자를 가져야 최댓값이 된다
하나의 알파벳이 여러번 나올 수 있기 때문에 이를 일반화하기 위해서 만약 ABCBA라면
A는 10001, B는 1010, C는 100 으로 표현한다.
딕셔너리에 이 값들을 저장한 뒤 n_list에 값만 옮겨서 내림차순 정렬을 해주었다.
값이 큰 순서대로 초기값이 9인 num을 곱해서 ans에 더해주고 num은 1씩 감소시켜준다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 1461번 도서관 (0) | 2022.10.31 |
---|---|
[백준][Python] 12904번 A와 B (0) | 2022.10.28 |
[백준][Python] 11256번 사탕 (1) | 2022.09.20 |
[백준][Python] 1439번 뒤집기 (0) | 2022.05.25 |
[백준][Python] 1715번 카드 정렬하기 (0) | 2022.05.04 |
댓글