알고리즘/[python] 백준 BOJ
[python] 백준 1339 단어 수학
Alan_Kim
2023. 2. 8. 22:30
728x90
반응형
https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
문제 해결
- 모든 알파벳에 1을 대입 했을 때 자리수를 고려하여 큰 수부터 차례대로 9부터 1까지 넣으면 될 것이다.
- ex) ABA + ABCA : A = 101+1001 = 1102, B = 10+100 = 110, C = 10
- A = 9대입 B = 8 대입, C = 7대입
- ex) ABA + ABCA : A = 101+1001 = 1102, B = 10+100 = 110, C = 10
CODE
import sys
n = int(input()) # 단어 개수
S = [] # 단어를 저장할 리스트
M = dict() # 단어 내의 알파벳별로 수를 저장할 딕셔너리
num = [] # 수를 저장할 리스트
for _ in range(n): # 단어를 입력받음
S.append(input().strip())
for i in range(n):
for j in range(len(S[i])): # 각 단어를 하나씩 뜯어본다.
if S[i][j] in M:
M[S[i][j]] += 10**(len(S[i])-j-1)
else:
M[S[i][j]] = 10**(len(S[i])-j-1)
for val in M.values():
num.append(val)
num.sort(reverse=True) # 내림차순 정리. 큰 수 부터 정리
ans = 0
pows = 9 # 숫자 9부터 알파벳에 차레대로 대응시킬 것이다.
for i in num: # 큰 수부터 뽑을 것이다.
ans += pows*i
pows -= 1
print(ans)
728x90
반응형