💡 그리디 알고리즘
Memory 1416KB Time 0ms Code Length 687B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string>
using namespace std;
bool cmp(const int &a, const int &b) {
return a > b;
}
int main() {
int n;
long long memory[100] = {0};
string arr[10];
long long result = 0;
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++) {
char tmp[11];
scanf("%s", tmp);
getchar();
arr[i] = tmp;
}
for (int i = 0; i < n; i++) {
int string_size = arr[i].size()-1;
for (int j = 0; j < arr[i].size(); j++) {
memory[arr[i][j]] +=pow(10, string_size);
string_size--;
}
}
sort(memory, memory + 100, cmp);
for (int i = 0; i < 9; i++) {
result += memory[i] * (9 - i);
}
printf("%lld", result);
}
이 코드는 문자열을 입력받아 각 문자의 등장 빈도를 계산하고, 이를 기반으로 가장 높은 빈도부터 큰 수를 부여하여 결과를 계산하는 프로그램이다. 문자열을 입력받은 후, 각 문자의 등장 빈도를 저장하는 memory 배열을 생성하고, 각 문자의 빈도를 계산하여 해당하는 인덱스에 더해준다. 그런 다음, memory 배열을 내림차순으로 정렬하고 상위 9개의 요소를 이용하여 결과를 계산한다. 마지막으로 결과를 출력한다.