1. 문제
https://www.acmicpc.net/problem/1339
2. 풀이 과정
1. 주어진 문자열이 "AFCA"이라면 A = 1000+1, F = 100, C = 10으로 자릿수만큼 수를 더해준다. 다음 문자열을 읽을 때는 이 값에 누적으로 더해주면 된다.
2. 누적으로 더한 수들을 정렬해서, 제일 큰 수를 가진 알파벳부터 9 => 8 => 7 ... 순으로 할당하는 것이 제일 큰 수를 만들 수 있다.
따라서 출력값은 (해당 알파벳이 가진 수)*(할당된 수)들을 모두 합하면 된다.
ex) AFCA = 1001 * 9 + 100 * 8 + 10 * 7 = 9879
word_dict = {}
for _ in range(int(input())):
for i, w in enumerate(reversed(input())):
word_dict[w] = word_dict.get(w, 0) + 10**i
#a = 정렬한 수
#b = 9 => 8 => 7 ...
print(sum(a * b for a, b in zip(sorted(word_dict.values(), reverse = True), range(9, -1, -1))))
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Python_DFS&BFS] 백준 16236번 : 아기 상어 (0) | 2021.12.01 |
---|---|
[Python_DFS&BFS] 백준 2206번 : 벽 부수고 이동하기 (0) | 2021.11.16 |
[Python_DynamicProgramming] 백준 1912번 : 연속합 (0) | 2021.11.02 |
[Python_String] 백준 1427번 : 소트인사이드 (0) | 2021.08.22 |
[Python_Search] 백준 2470번 : 두 용액 (0) | 2021.08.21 |