백준 1339번 단어 수학 (Python 3)
2022. 9. 8. 15:23ㆍProblem solving
Baekjoon online judge 1339번 파이썬
링크
https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
greedy 하게 가장 자리수가 긴 단어의 가장 앞 알파벳일 수록 큰 숫자를 가져야한다.
(만약 같은 자리수의 단어가 있다면, 그 다음 자리에 같은 알파벳을 같는 경우가 우선된다.
예를 들면, AAAA, BCDE 가있으면 B에 9를 부여하는것보다 A에 9를 부여하는 것이 합이 더 커지게 된다.)
소스코드
import sys
from collections import defaultdict
input=sys.stdin.readline
n=int(input())
alpha=defaultdict(int)
value=list()
words=list()
ans=0
for _ in range(n):
words.append(input().rstrip())
for i in range(len(words)):
for j in range(len(words[i])):
alpha[words[i][j]]+=10**(len(words[i])-j-1)
for v in alpha.values():
value.append(v)
value.sort(reverse=True)
k=9
for i in range(len(value)):
ans+=value[i]*k
k-=1
print(ans)
'Problem solving' 카테고리의 다른 글
백준 2143번 두 배열의 합 (Python 3) (0) | 2022.09.08 |
---|---|
백준 1806번 부분합 (Python 3) (0) | 2022.09.08 |
백준 1062번 가르침 (Python 3) (0) | 2022.09.08 |
백준 20061번 모노미노도미노 2 (Python 3) (0) | 2022.09.02 |
백준 16234번 인구 이동 (Python 3) (0) | 2022.09.02 |