n = int(input())
dic_word = {}
for _ in range(n):
word = input()
for i in range(len(word)):
w = word[i]
if w in dic_word:
dic_word[w] += 10 ** (len(word)-i-1)
else:
dic_word[w] = 10 ** (len(word)-i-1)
nums = []
for value in dic_word.values():
nums.append(value)
nums.sort(reverse=True)
result = 0
cnt = 9
for i in nums:
result += (i*cnt)
cnt -= 1
print(result)
딕셔너리 자료형을 이용해서 우선순위를 매기는 것 까지는 생각했는데, 더 디테일한 아이디어가 필요한 문제였다.
import heapq
import sys
n = int(input())
card = []
for _ in range(n):
heapq.heappush(card, int(sys.stdin.readline()))
if len(card) > 1:
result = 0
while len(card) > 1:
temp_1 = heapq.heappop(card) # 가장 작은 덱
temp_2 = heapq.heappop(card) # 두번째로 작은 덱
result += (temp_1 + temp_2)
heapq.heappush(card, temp_1 + temp_2)
print(result)
else:
print(0)
한 번 풀었던 문제인데 또 못풀었다.
heapq 자료구조가 나오면 일단 겁을 먹는 것 같아서 정리해 두기로 했다.
프로그래머스 챌린지 참가로 2문제만~