티스토리 뷰

ALGORITHM/BOJ

[백준] 1339 단어 수학

뚜비두빱 2021. 12. 26. 18:59

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

 

1339번: 단어 수학

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

www.acmicpc.net

 

ABC, BACDE가 있다면 B가 제일 높은숫자, 그다음 A, C  순으로 큰 자릿수에 있는 알파벳 순으로 높은 숫자를 매겨줘야 제일 큰 합을 얻어낼 수 있습니다. 이를 위해 1의자리에 있는 알파벳 (C, E) 에 1을 더해주고, 10의자리에 있는 알파벳(B, D)에는 10을 더해주고 마지막에 정렬을 해줘서 제일 숫자가 높은 알파벳에 우선순위를 정할 수 있도록 하였습니다.

 

# https://www.acmicpc.net/problem/1339
# 단어 수학.py

dic = dict()
answer_dic = dict()
board = []
for i in range(26):
    dic[chr(ord('A')+i)] = 0

# 알파벳에 자릿수 더해주기 
N = int(input())
for i in range(N):
    x = input()[::-1]
    board.append(x)
    for j in range(len(x)):
        dic[x[j]] += 1 * (10 ** j)
        
# 할당된 숫자를 기준으로 알파벳 정렬 후 9부터 1까지 숫자 할당
res = sorted(dic.items(), key=lambda x : x[1],reverse=True)
start_n = 9
for i in res:
    if i[1] == 0:
        break
    answer_dic[i[0]] = start_n
    start_n -= 1

# 계산 해주기
answer = 0
for s in board:
    for i, v in enumerate(s):
        answer += answer_dic[v] * (10 ** i)
        
print(answer)

'ALGORITHM > BOJ' 카테고리의 다른 글

백준 1259 팰린드롬수.py  (0) 2021.12.05
[백준] 문자열 폭발  (0) 2021.11.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함