1339: 단어 수학

ewillwin·2023년 6월 18일
0

Problem Solving (BOJ)

목록 보기
78/230

  • 자릿수가 큰 곳에 위치한 알파벳에 큰 숫자를 매칭해줘야함
    -> assn 딕셔너리를 통해 words의 word를 순회하며 각 알파벳들의 자릿수에 따른 level을 계산해줌 (아래 두 사진처럼)

  • dictionary를 value에 따라 내림차순으로 정렬해줌
sorted(assn.items(), key=lambda x: x[1], reverse=True)
  • sorted_dict를 순회하면서 9, 8, 7, ... 순서로 각 알파벳에 숫자를 할당해주고 합을 구함
import sys
from collections import deque

N = int(input())
words = []
for i in range(N):
	tmp = list(sys.stdin.readline()[:-1])
	words.append(tmp)

assn = dict()
for word in words:
	for i in range(len(word)):
		number = 10 ** (len(word) - i - 1)
		if word[i] in assn:
			assn[word[i]] += number
		else:
			assn[word[i]] = number

sorted_dict = sorted(assn.items(), key=lambda x: x[1], reverse=True)
answer = 0
for i in range(len(sorted_dict)):
	answer += sorted_dict[i][1] * (9 - i)

print(answer)
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글