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
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1940 주몽 (0) | 2023.02.18 |
---|---|
[python] 백준 14225 부분수열의 합 (0) | 2023.02.10 |
[python] 백준 11721 열 개씩 끊어 출력하기 (0) | 2023.02.05 |
[python] 백준 2250 트리의 높이와 너비 (1) | 2023.02.01 |
[python] 백준 1261 알고스팟 (0) | 2023.01.29 |
댓글