백준 1339번 단어 수학 (Python 3)

2022. 9. 8. 15:23Problem solving

Baekjoon online judge 1339번 파이썬

 

링크

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

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net

greedy 하게 가장 자리수가 긴 단어의 가장 앞 알파벳일 수록 큰 숫자를 가져야한다.

(만약 같은 자리수의 단어가 있다면, 그 다음 자리에 같은 알파벳을 같는 경우가 우선된다.

예를 들면, AAAA, BCDE 가있으면 B에 9를 부여하는것보다 A에 9를 부여하는 것이 합이 더 커지게 된다.)

 

소스코드

import sys
from collections import defaultdict
input=sys.stdin.readline

n=int(input())
alpha=defaultdict(int)
value=list()
words=list()
ans=0
for _ in range(n):
    words.append(input().rstrip())


for i in range(len(words)):
    for j in range(len(words[i])):
        alpha[words[i][j]]+=10**(len(words[i])-j-1)

for v in alpha.values():
    value.append(v)
value.sort(reverse=True)
k=9
for i in range(len(value)):
    ans+=value[i]*k
    k-=1
print(ans)