https://www.acmicpc.net/problem/1339
목적
GCF + ACDEB를 계산한다고 할 때, 합을 최대로 만들기 위해 A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다.
접근법
1. 각 단어의 알파벳 정보를 각 자리수를 고려하여 1*10^n의 값으로 대체하여 저장한다.
- 계산 하려는 수식은 GCF + ACDEB로, 우선은 다음과 같이 사용하고자 하는 알파벳 개수 만큼의 배열을 준비한다.
- 이제 단어를 하나씩 가지고 배열의 값을 갱신해 나간다. 첫번째 단어인 GCF에서 G,C,F 각각은 100,10,1의 자리에 위치해 있다. 다음과 같이 배열을 갱신한다.
- 같은 방법으로, 두번째 단어인 ACDEB로 배열을 갱신하면 다음과 같다.
2. 모든 단어를 이용하여 배열에 값을 채워 넣었다면, 이제 배열을 정렬하여 큰 순서부터 9~1의 수를 결정해 곱하여 최종 결과 값에 모두 더해주면 된다..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int n; cin >> n;
int s['Z' + 1] = {};
while (n--) {
string s; cin >> s;
for (int i = s.length() - 1, j = 1; i >= 0; --i, j *= 10)s[s[i]] += j;
}
sort(s + 'A', s + 'Z' + 1);
int ret=0,val=10;
for (char c = 'Z'; c >= 'A'; --c)if (s[c] != 0)ret += (s[c] * (--val));
cout << ret;
}
|
'Problem Solving > BOJ 백준' 카테고리의 다른 글
[ BOJ 백준 1405번 - 미친 로봇 ] 해설 및 코드 (0) | 2019.12.08 |
---|---|
[ BOJ 백준 17136번 - 색종이 붙이기 ] 해설 및 코드 (0) | 2019.12.08 |
[ BOJ 백준 1035번 - 조각 움직이기 ] 해설 및 코드 (0) | 2019.12.08 |
[ BOJ 백준 1344번 - 축구 ] 해설 및 코드 (0) | 2019.12.07 |
[ BOJ 백준 4574번 - 스도미노쿠 ] 해설 및 코드 (0) | 2019.12.07 |