Greedy
๋ฌธ์ ์ด๋ค.
์ด๋ฒ ๊ป ์กฐ๊ธ ๋์ด๋๊ฐ ์์๋ค. ํ๊ณ ๋ณด๋, Gold 4
๋ฌธ์ ์๋ค.
N = int(input())
words = dict()
for _ in range(N):
word = list(input())
digit = 1
for w in reversed(word):
words[w] = digit if w not in words else words[w] + digit
digit *= 10
num, _sum = 9, 0
for w in sorted(words.items(), reverse=True, key=lambda x:x[1]):
_sum += num * w[1]
num -= 1
print(_sum)
์ด๋ป๊ฒ ํ๊น ๊ณ ๋ฏผ์ ํ๊ณ , ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ ์ฌ๋์ง๋ง ์ ๋ป ํ๋๋ฅผ ์ ํ์ง ๋ชปํ๋ค.
ํ ๋ธ๋ก๊ทธ ๊ธ์ ์ฐธ๊ณ ํด์ ๋ฐฉํฅ์ ์ ํ๊ณ ์ฝ๋๋ ๋ชจ๋ ๋ด๊ฐ ์์ฑํ๋ค.
๋๋ dict
๋ฅผ ์ด์ฉํด์ ํ๊ณ , dict
๋ฅผ ์ ๋ ฌํ๋ค.
dict
๋ unordered
์๋ฃ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ํ๊ธด ํ์ง๋ง,,, ๊ฐ์ด์น ์์๋ค.
n = int(input())
word = [list(map(lambda x: ord(x)-65, input().rstrip())) for _ in range(n)]
alpha = [0] * 26
for i in range(n):
j = 0
for w in word[i][::-1]:
alpha[w] += (10 ** j)
j += 1
alpha.sort(reverse=True)
ans, t = 0, 9
for i in range(26):
if alpha[i] == 0:
break
ans += (t * alpha[i])
t -= 1
print(ans)
double-list
๋ก ํธ์
จ๋ค.