1132 - 합

LeeKyoungChang·2022년 6월 3일
0

Algorithm

목록 보기
137/203
post-thumbnail

📚 1132 - 합

 

이해

문자열이 입력될 시, 인덱스 0번부터 높은 숫자를 주면 된다. (0 ~ 9 사이)

ABC -> 987

다만, 첫 번째에 나온 문자에 0을 줄 수가 없다.

ABCDEFGHIJ
J

이럴 경우 J에 0을 주면, 문제에서 제시한 0으로 시작하는 수는 없다.를 어기게 된다.
그러므로 문자열이 입력될 때, 첫 번째로 나온 문자인지 체크해준다.
크기가 가장 작은 값부터 뒤에서 확인하여, 첫 번째 시작이 아니라면, 그 값을 0으로 만들어 준다.

ABCDE
ECBA

A : 10001
B : 1010
C : 100
D : 10
E : 1001

A -> B -> E -> C -> D 순으로 합을 계산하면 된다.

 

소스

import sys  
  
read = sys.stdin.readline  
  
n = int(read())  
  
alpha = [[0, False] for _ in range(10)]  
  
for i in range(n):  
    a = read().rstrip()  
    m = 1  
    alpha[ord(a[0]) - 65][1] = True  
    for j in range(len(a) - 1, -1, -1):  
        alpha[ord(a[j]) - 65][0] += m  
        m *= 10  
  
alpha.sort(reverse=True)  
  
if alpha[9][1]:  
    for i in range(8,-1,-1):  
        if not alpha[i][1]:  
            del alpha[i]  
            break  
  
answer = 0  
  
for i in range(9):  
    answer += alpha[i][0] * (9-i)  
  
print(answer)
스크린샷 2022-06-04 오전 12 21 38

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글