https://www.acmicpc.net/problem/1132
1132번: 합
N개의 숫자가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으
www.acmicpc.net
1. ABC, BCA의 경우 101A + 110B + 11C 이므로 9부터 1까지 역으로 정렬후 곱해주면 된다.
2. a 배열의 1번째 값은 알파벳의 자리의 합 2번째는 알파벳이 맨 앞에인지 확인하는 값이다.
3. 만약 정렬후 마지막 값이 앞에 존재할경우 가장 가까운값 중에 앞에 존재하지 않는 값기준으로 땡겨준다.
ex) AB BCD CDE DEF EFG FGH GHI HIJJJ의 경우 A값이 앞에 있는데 정렬후 가장 뒤로간다.
n = int(input())
a = [[0, False] for _ in range(10)] # A B C ..
ans = 0
for _ in range(n):
s = input()
m = 1
a[ord(s[0])-65][1] = True
for c in range(len(s)-1, -1, -1):
a[ord(s[c])-65][0] += m
m *= 10
a.sort(reverse=True)
if a[9][1]:
for i in range(8, -1, -1):
if not a[i][1]:
del a[i]
break
for i in range(9):
ans += a[i][0] * (9-i)
print(ans)
'알고리즘 > BOJ' 카테고리의 다른 글
[Python] 백준 11049: 행렬 곱셈 순서 (0) | 2021.10.02 |
---|---|
[Python] 백준 17070: 파이프 옮기기 1 (0) | 2021.10.02 |
[Python] 백준 17371: 이사 (0) | 2021.09.27 |
[Python] 백준 1398: 동전문제 (0) | 2021.09.27 |
[Python] 백준 2590: 색종이 (0) | 2021.09.26 |
댓글