[BOJ][๐ŸŸก4][๋ฐฑ์ค€#01339] ๋‹จ์–ด ์ˆ˜ํ•™

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1339


๋ฌธ์ œ

๋ฏผ์‹์ด๋Š” ์ˆ˜ํ•™ํ•™์›์—์„œ ๋‹จ์–ด ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ˆ™์ œ๋ฅผ ๋ฐ›์•˜๋‹ค. ๋‹จ์–ด ์ˆ˜ํ•™ ๋ฌธ์ œ๋Š” 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๋ถ€ํ„ฐ ๋ฐฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  1. ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค.
  2. ์ž…๋ ฅ๋œ ๋‹จ์–ด๋“ค์„ ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ์ž˜๋ผ ์–ผ๋งˆ๋‚˜ ํฐ ์ž๋ฆฌ์—์„œ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š”์ง€ dictionary๋กœ ์„ธ์–ด์ค€๋‹ค. ์ด๋ฅผ make_S ํ•จ์ˆ˜์—์„œ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.
  3. dictionary์˜ ๊ฐ’๋“ค๋งŒ ๋”ฐ๋กœ ๋นผ๋‚ด์–ด ์ •๋ ฌํ•˜๊ณ , ํฐ ์ˆ˜๋ถ€ํ„ฐ 9์”ฉ ๋ฐฐ์ •ํ•˜๋ฉฐ ๊ณฑํ•˜๋ฉฐ ๋ˆ„์ ํ•ด์ฃผ์—ˆ๋‹ค. 9๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค๋ฉด 8, 7, 6 ์ˆœ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ•œ ์ž๋ฆฌ ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ณฑํ•ด์ฃผ์—ˆ๋‹ค. ์ด ๊ณผ์ •์„ match ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.
  4. ์ด๋ฅผ ์ถœ๋ ฅํ•˜์˜€๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ