알고리즘 공부
[BOJ] 단어수학(1339) 문제 풀이 | Python3
유나쒸
2021. 5. 9. 03:56
2 GCF ACDEB 예제에서 각 알파벳에 대해 자릿수만큼 더한 후 더한 수를 정렬하고 순서대로 9 to 1 을 곱하여 더하면 최대값을 도출할 수 있다.
ACDEB 는 A:10000 B:1 C:1000 D:100 E:10 이며
GCF 결과를 누적하면 A:10000 B:1 C:1010 D:100 E:10 F:1 G:100 으로 계산할 수 있다.
더한 수를 내림차순으로 정렬하면 A:10000, C:1010, D:100, G:100, E:10, B:1, F:1이다.
정렬된 values(10000,1010,100,100,10,1,1)에 순서대로 9,8,...3 를 곱해서 더하면 최대값이 나온다.
1 2 3 4 5 6 7 8 9 | import sys n, *words = map(lambda x: x.rstrip(), sys.stdin.readlines()) alpha={} for word in words: for i, w in enumerate(word[::-1]): if w in alpha.keys(): alpha[w]+=10**i else: alpha[w]=10**i print(sum(v*n for v,n in zip(sorted(alpha.values(), reverse=True), range(9,0, -1)))) | cs |