131.単語数学


白駿

1. Python


n = int(input())

words = [input() for _ in range(n)]


dict = {}
#딕셔너리에 알파벳당 숫자 집어넣기
for word in words:
  k=len(word)-1
  for s in word:
    if s in dict:
      dict[s]+=pow(10,k)
    else:
      dict[s]=pow(10,k)
    k-=1
    
nums=[]

#사전의 값들만으로 이루어진 리스트 초기화하기
for value in dict.values():
  nums.append(value)

#숫자 큰순으로 정렬하기
nums.sort(reverse=True)

#출력할 값과 곱해야하는 수 초기화하기
result,t=0,9

#값 구하기
for i in range(len(nums)):
  result+=nums[i]*t
  t-=1


print(result)


2. C++


// 알파벳이 주어지면
// 알파벳별로 숫자를 하나씩 매핑해보는게 일입니다.
// 최대 10개가 주어지는데....경우의수?????
// 이렇게 만든 경우의수에 대해서
// 직접 숫자을 대입해서 합을구하고, 최대값을 찾는다.... 

// 두번째 ==> 숫자를 그대로이용하는 방법 
// ABCD : 1000 * A + 100 * B + 10 * C + D
// GCD : 100 * G + 10 * C + D
// EFABC : 10000 * E + 1000 * F + 100 * A + 10 * B + C
// ----------------------------------------------------
// 1100 * A + 110 * B + 21 * C + 2 * D + 10000 * E + 1000 * F + 100 * G