티스토리 뷰
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
주어진 문자열에 숫자 0~9를 대입하여 합이 최대로 나오게 만들면 된다.
긴 문자열 순으로 앞에서부터 9부터 넣어가면 된다.
하지만 하나 주의할 점은 BAA, AAA 와 같은 경우 A에 9를 넣어야 하지만, 순서대로 하면 B에 9를 넣을 수도 있다.
그래서 우선 각 알파벳 별로 dict를 이용해 가능한 10의 거듭제곱으로 값을 만들어주었다. AAA의 경우 dict['A']에 111을 더하게 된다.
그리고 여기서 가장 큰 값부터 9부터 곱해서 더해주면 된다.
코드는 다음과 같다.
n = int(input())
arr = []
for i in range(n):
alphabet = input()
arr.append(alphabet)
check = dict()
for alpha in arr:
cnt = 0
for i in alpha:
if i in check:
check[i] += 10 ** (len(alpha) - cnt - 1)
else:
check[i] = 10 ** (len(alpha) - cnt - 1)
cnt += 1
val = list(check.values())
val.sort(reverse=True)
result = 0
tmp = 9
for i in val:
result += tmp * i
tmp -= 1
print(result)
'알고리즘 > 백준' 카테고리의 다른 글
백준 / 1949 우수 마을 C++ (0) | 2021.03.12 |
---|---|
백준 / 1005 ACM Craft (0) | 2021.03.12 |
백준 / 2533 사회망 서비스 C++ (0) | 2021.03.08 |
백준 / 1069 집으로 python3 (0) | 2021.03.07 |
백준 / 11559 Puyo Puyo C++ (0) | 2021.03.07 |
댓글