반응형
https://www.acmicpc.net/problem/1339
import collections
n = int(input())
dct = collections.defaultdict(int)
for i in range(n):
s = input()
r = 10**(len(s)-1)
for j in range(len(s)):
dct[s[j]] += r
r /= 10
table = []
for key, val in dct.items():
table.append(val)
table.sort(reverse=True)
max = 9
answer = 0
for i in range(len(table)):
answer += table[i]*max
max-=1
print(int(answer))
처음 보고 읭? 했지만 좀만 생각해보면 쉽게 풀 수 있는 그리디 문제다.
숫자들이 막 더해지면 자릿수가 올라갈 수도 있고, 또 알파벳은 한번만 등장하는 것도 아니고
이런 생각들을 하다보니 처음에는 감이 안잡혔지만
2 GCF ACDEB를 좀 생각해보면 다음과 같아진다.
10000A + 1010C + 100D + 100G + 10E + B + F
즉 알파벳의 계수를 구한 뒤에 계수 순으로 차례대로 9,8,7,6...을 넣어주면
합이 최대가 될 것이다. 끝!
댓글