본문 바로가기
알고리즘/그리디

[백준][Python] 1339번 단어 수학

by 임짠짠 2022. 10. 27.
반응형
 

1339번: 단어 수학

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

www.acmicpc.net

 

 

코드

from collections import defaultdict
n = int(input())
dic = defaultdict(int)
word = []
for _ in range(n):
	word.append(input())

for w in word:
	for i in range(len(w)):
		dic[w[i]] += 10**(len(w)-i-1)
n_list = []
for i in dic:
	n_list.append(dic[i])
n_list.sort(reverse=True)
num = 9
ans = 0
for i in n_list:
	ans += i*num
	num -= 1
print(ans)

 

설명

높은 자릿수에 있는 알파벳이 더 높은 숫자를 가져야 최댓값이 된다

 

하나의 알파벳이 여러번 나올 수 있기 때문에 이를 일반화하기 위해서 만약 ABCBA라면

A는 10001, B는 1010, C는 100 으로 표현한다.

 

딕셔너리에 이 값들을 저장한 뒤 n_list에 값만 옮겨서 내림차순 정렬을 해주었다.

값이 큰 순서대로 초기값이 9인 num을 곱해서 ans에 더해주고 num은 1씩 감소시켜준다.

반응형

댓글