본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1132 합

by Alan_Kim 2023. 5. 7.
728x90
반응형

https://www.acmicpc.net/problem/1132

 

1132번: 합

N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로

www.acmicpc.net

 

문제 해결

  • 알파벳에 숫자를 부여해서 주어진 문자의 합이 가장 크도록 만들기
  • 단 한자리 알파벳이 주어졌을 때 그 알파벳은 0이 되면 안된다.
  • 0이 안되는 알파벳을 어떻게 구현할까 고민했는데 True,False로 주어진 정보를 추가하는 수밖에 없는 것 같다.
  • 구현은 어렵지 않다!

 

CODE

import sys
input = sys.stdin.readline
n = int(input())
alpha = [[0,False] for _ in range(10)]
answer = 0
for _ in range(n):
    word = list(input().rstrip())
    m = 1
    alpha[ord(word[0])-ord('A')][1] = True
    for w in range(len(word)-1,-1,-1):
        alpha[ord(word[w])-ord('A')][0] += m
        m *= 10
alpha.sort()
if alpha[0][1]:
    for i in range(1,10):
        if not alpha[i][1]:
            del alpha[i]
            break
for i in range(1,10):
    answer += alpha[-i][0]*(10-i)
print(answer)
728x90
반응형

댓글