https://www.acmicpc.net/problem/1339
문제 풀이
맨 처음에는 자릿수마다의 알파벳을 저장해 완탐형식으로 하려 했는데 잘되지 않았다.
그래서 알파벳 별로 자릿수들의 합을 이용해 문제를 해결했다
예를 들어 1번 예시인 AAA, AAA 인 경우에는 alpha[0] = 222가 들어가는 형식이다.
아무튼 이런 방법으로 합이 큰 값들부터 정렬해서 9부터 차례로 곱해주었다.
소스코드
#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
int alpha[26] = { 0 };
bool compare(int a, int b) {
if (a > b)
return true;
else
return false;
}
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
string a;
cin >> a;
for (int j = 0; j < a.size(); j++) {
int idx = a[j] - 'A';
alpha[idx] += pow(10, a.size() - j - 1);
}
}
sort(alpha, alpha + 26, compare);
int result = 0;
int num = 9;
for (int j = 0; j <= 9; j++) {
result += num * alpha[j];
num--;
}
cout << result << '\n';
}
'알고리즘' 카테고리의 다른 글
[백준] 1300번 K번째 수 C++ 문제풀이 (0) | 2023.08.09 |
---|---|
[백준] 2108번 통계학 C++ 문제풀이 (0) | 2023.08.09 |
[백준] 9663번 N-Queen C++ 문제풀이 (0) | 2023.08.06 |
[백준] 1713번 후보 추천하기 C++ 문제풀이 (0) | 2023.08.05 |
[백준] 3055번 탈출 C++ 문제풀이 (0) | 2023.08.03 |