본문 바로가기
알고리즘/BOJ

[Python] 백준 1132: 합

by PIAI 2021. 9. 29.

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)

댓글