문제링크 :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)
'알고리즘' 카테고리의 다른 글
python 백준11931 수 정렬하기 4(BOJ11931) (0) | 2022.12.22 |
---|---|
python 백준1439 뒤집기(BOJ1439 ) (0) | 2022.08.02 |
python 백준1946 신입사원(BOJ1946 ) (0) | 2022.07.31 |
python 백준1789 수들의 합(BOJ1789) (0) | 2022.07.31 |
python 백준2217 로프(BOJ2217) (0) | 2022.07.25 |