코딩/백준 그리디 문제
BaekJoon[1339]
코딩의 숲
2023. 2. 17. 12:23
이문제는 간단하게 들어온 알파벳의 위치에따라 10을 곱해줘서 우선순위를 리스트에저장하고
ABB#A가 3째자리에있으니 10**(3-1)=100의 우선순위를부여 B는 두번째 첫번쨰자리에있으니 10**(2-1)+10**(1-1)=11
CS#마찬가지로 C=10**(2-1),S=10**(1-1)
EX) ['A':100,'B':11,'C':10,'S':1]#정렬
이값에 FOR문을 리버스로 돌려서 9부터 1까지 삽입후 처음에 들어왔던 값들에 매치 시켜주면 끝
alphabet=[input() for i in range(int(input()))]
alphabet_value={}
priority=[]
a=11
for i in alphabet:
for j in range(len(i)):
if alphabet_value.get(i[j])==None:
alphabet_value[i[j]]=0
alphabet_value[i[j]]+=10**(len(i)-j+1)
alphabet_value=sorted(alphabet_value.items(),key=lambda x:-x[1])
n=9
encode={}
for i in alphabet_value:
encode[i[0]]=str(n)
n-=1
result=0
for i in range(len(alphabet)):
char=''
for j in range(len(alphabet[i])):
char+=encode[alphabet[i][j]]
result+=int(char)
print(result,end='')