티스토리 뷰

728x90

https://www.acmicpc.net/problem/1339

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net


  • 해설 : 

알파벳 대문자들로만 이루어진 문자열 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
= 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
= 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