티스토리 뷰
728x90
https://www.acmicpc.net/problem/1339
- 해설 :
알파벳 대문자들로만 이루어진 문자열 N개가 주어진다. 각 알파벳 대문자를 0~9의 숫자로 치환하여 더하였을 때 그 결괏값이 최대가 되는 경우를 구하는 문제이다.
- 풀이 :
문자열에 존재하는 알파벳별 가중치를 계산하기 위한 배열을 만들고, 이 배열에 문자열에 있는 문자들마다의 가중치를 더해준다
예를 들어 ,
ABC라는 문자열이 있다면
배열[A]의 가중치는 100이고
배열[B]는 10
배열[C]는 1이다.
이런 식으로 모든 문자열에 대해 가중치를 정해준 후,
가중치가 높은 알파벳을 9부터 1씩 감소하는 수로 치환해준다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
x = int(input())
num = []
for i in range(x):
num.append(input())
weight = [0 for i in range(26)]
for i in range(len(num)):
x = 0
for j in range(len(num[i])-1,-1,-1):
weight[ord(num[i][j])-ord('A')] += pow(10,x)
x+=1
weight.sort(reverse = True)
ans=0
j = 9
for i in range(10):
ans +=weight[i]*j
j-=1
print(ans)
|
cs |
320x100
'Algorithm > Math' 카테고리의 다른 글
(Python) - BOJ(2407번) : 조합 (0) | 2022.01.31 |
---|---|
(Python) - BOJ(1929번) : 소수 구하기 (0) | 2022.01.28 |
(C++) - BOJ(1242번) : 소풍 (0) | 2022.01.26 |
(Python) - BOJ(1105번) : 팔 (0) | 2022.01.25 |
(Python) - BOJ(1041번) : 주사위 (0) | 2022.01.25 |
댓글
© 2022 WonSeok, All rights reserved