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
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1949 우수 마을 (0) | 2023.05.07 |
---|---|
[python] 백준 2157 여행 (0) | 2023.05.07 |
[python] 백준 2666 벽장문의 이동 (0) | 2023.05.06 |
[python] 백준 2831 댄스 파티 (0) | 2023.05.06 |
[python] 백준 13144 List of Unique Numbers (0) | 2023.05.06 |
댓글