알고리즘
python 백준1339 단어수학(BOJ1339)
피프밍
2022. 8. 1. 01:11
문제링크 :https://www.acmicpc.net/problem/1339
처음에 그냥 자리수별로 9부터 부여하면되는줄알고 풀었는데 답이 틀렸다고 나왔다.
가중치를 계산하는 생각을 하는데 시간이 오래걸렸다.
그리고 파이썬 딕셔너리를 문제풀때 처음 써봤는데 연습하기 딱 좋았다
#단어갯수
n = int(input())
alphabets = []
#알파벳 계산식 입력
for _ in range(n):
alphabet = input()
alphabets.append(alphabet)
#가중치 dict
weight = {}
for i in range(n):
#문자별 가중치 계산
for j in range(0, len(alphabets[i])):
if weight.get(alphabets[i][j]) != None:
weight[alphabets[i][j]] += 10 ** (len(alphabets[i])-1-j)
else :
weight[alphabets[i][j]] = 10 ** (len(alphabets[i])-1-j)
#가중치 정렬
sorted_weight = sorted(weight.items(), key = lambda item : item[1], reverse = True)
#가중치에 따른 숫자가 들어갈 dict
weight_num = {}
#시작 숫자
num = 9
#가중치에따라 숫자 부여
for i in sorted_weight:
weight_num[i[0]] = str(num)
num -= 1
#합계
result = 0
#알파벳을 숫자로 치환하고 덧셈
for i in range(n):
temp = ""
for j in range(0, len(alphabets[i])):
temp += weight_num.get(alphabets[i][j])
result += int(temp)
#출력
print(result)