본문 바로가기

백준 문풀

[Python] 그리디- 1339. 단어수학(골4)

https://www.acmicpc.net/problem/1339

 

1339번: 단어 수학

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

www.acmicpc.net

 

>>문제포인트

- 각 알파벳이 몇번 등장했는지 진수로 판단해야 하는 문제

---예를 들어 AAA라면-> A는 111(100+10+1)번 나왔음

- 많이 나온 횟수의 알파벳부터 9부터 차례로 곱해 result 출력

 


>>코드

n= int(input())

dict ={}

#출현 횟수를 십진수로 저장
for i in range(n):
  word= input()
  word_len= len(word)
  for idx, j in enumerate(word):
    if j in dict.keys():
      dict[j]+=pow(10,word_len-1-idx)
    else:
      dict[j]=0
      dict[j]+=pow(10,word_len-1-idx)

#value값으로 내림차순(많이 나온 알파벳부터)
word_sort = sorted(dict.items(), reverse=True, key= lambda x: x[1])
'''
2
GCF
ACDEB

word_sort 예시
[('A', 10000), ('C', 1010), ('G', 100), ('D', 100), ('E', 10), ('F', 1), ('B', 1)]'''

result=0
top=9
for i in word_sort:
  result+=top*i[1]
  top-=1

print(result)