[BOJ][๐ก4][๋ฐฑ์ค#01339] ๋จ์ด ์ํ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold IV
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
๋ฏผ์์ด๋ ์ํํ์์์ ๋จ์ด ์ํ ๋ฌธ์ ๋ฅผ ํธ๋ ์์ ๋ฅผ ๋ฐ์๋ค. ๋จ์ด ์ํ ๋ฌธ์ ๋ N๊ฐ์ ๋จ์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ ๋จ์ด๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. ์ด๋, ๊ฐ ์ํ๋ฒณ ๋๋ฌธ์๋ฅผ 0๋ถํฐ 9๊น์ง์ ์ซ์ ์ค ํ๋๋ก ๋ฐ๊ฟ์ N๊ฐ์ ์๋ฅผ ํฉํ๋ ๋ฌธ์ ์ด๋ค. ๊ฐ์ ์ํ๋ฒณ์ ๊ฐ์ ์ซ์๋ก ๋ฐ๊ฟ์ผ ํ๋ฉฐ, ๋ ๊ฐ ์ด์์ ์ํ๋ฒณ์ด ๊ฐ์ ์ซ์๋ก ๋ฐ๋์ด์ง๋ฉด ์ ๋๋ค. ์๋ฅผ ๋ค์ด, GCF + ACDEB๋ฅผ ๊ณ์ฐํ๋ค๊ณ ํ ๋, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3,ย G = 7๋ก ๊ฒฐ์ ํ๋ค๋ฉด, ๋ ์์ ํฉ์ 99437์ด ๋์ด์ ์ต๋๊ฐ ๋ ๊ฒ์ด๋ค. N๊ฐ์ ๋จ์ด๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ ํฉ์ ์ต๋๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N(1 โค N โค 10)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋จ์ด๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ๋จ์ด๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค. ๋ชจ๋ ๋จ์ด์ ํฌํจ๋์ด ์๋ ์ํ๋ฒณ์ ์ต๋ 10๊ฐ์ด๊ณ , ์์ ์ต๋ ๊ธธ์ด๋ 8์ด๋ค. ์๋ก ๋ค๋ฅธ ๋ฌธ์๋ ์๋ก ๋ค๋ฅธ ์ซ์๋ฅผ ๋ํ๋ธ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง ๋จ์ด์ ํฉ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
2
AAA
AAA
์ถ๋ ฅ
1998
์์ 2
์ ๋ ฅ
2
GCF
ACDEB
์ถ๋ ฅ
99437
์์ 3
์ ๋ ฅ
10
A
B
C
D
E
F
G
H
I
J
์ถ๋ ฅ
45
์์ 4
์ ๋ ฅ
2
AB
BA
์ถ๋ ฅ
187
My Sol
def main():
def make_S():
S = {}
cur_words = words[:]
for word in cur_words:
i = 0
word_list = list(word)
while word_list:
w = word_list.pop()
S[w] = S.get(w, 0) + 10**i
i += 1
return S
def match():
lst = sorted(S.values())
ret, n = 0, 9
while lst:
ret += n * lst.pop()
n -= 1
return ret
N = int(input())
words = [input() for _ in range(N)]
S = make_S()
return match()
print(main())
๊ทธ๋ฆฌ๋๋ฌธ์ ํน์ฑ์ ์ฒ์ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค. ๋ฌธ์ ํ์ด์ key point๋ ์๋ฆฟ์๋ก ๋๋ ์ ์ ๋ ฌํ๋ฉฐ 9๋ถํฐ ๋ฐฐ์ ํ๋ ๊ฒ์ด๋ค.
- ์ ๋ ฅ์ ๋ฐ๋๋ค.
- ์
๋ ฅ๋ ๋จ์ด๋ค์ ์๋ฆฟ์๋ง๋ค ์๋ผ ์ผ๋ง๋ ํฐ ์๋ฆฌ์์ ์ผ๋ง๋ ์์ฃผ ๋ฑ์ฅํ๋์ง dictionary๋ก ์ธ์ด์ค๋ค. ์ด๋ฅผ
make_S
ํจ์์์ ์์ฑํ์ฌ ๋ฐํํ์๋ค. - dictionary์ ๊ฐ๋ค๋ง ๋ฐ๋ก ๋นผ๋ด์ด ์ ๋ ฌํ๊ณ , ํฐ ์๋ถํฐ 9์ฉ ๋ฐฐ์ ํ๋ฉฐ ๊ณฑํ๋ฉฐ ๋์ ํด์ฃผ์๋ค. 9๋ฅผ ์ฌ์ฉํ์๋ค๋ฉด 8, 7, 6 ์์ผ๋ก ์ฌ์ฉํ์ง ์์ ํ ์๋ฆฌ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ๊ณฑํด์ฃผ์๋ค. ์ด ๊ณผ์ ์
match
ํจ์ ๋ด์์ ์์ฑํ์ฌ ๋ฐํํ์๋ค. - ์ด๋ฅผ ์ถ๋ ฅํ์๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ