https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
단어를 입력 받을때 각 단어들의 개수와 위치를 숫자로 바꾸어서 AAA라면 100+10+1 이되어 111이되고
ABC라면 A위치는 100 B는 10 C는 1을 각 위치 배열에 더해준다
모두 더한값이 큰 순으로 알파벳에 큰 수를 부여해 주는것이 가장 효율적이므로 정렬하여 큰 수를 부여한다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int cmp(int i, int j) {
return i > j;
}
int arr[26]; // 각 알파벳의 정보가 있는 배열
char st[30]; // 입력받은 단어
int n, x, sum = 0;
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s",st);
x = 1;
for (int j = strlen(st) - 1; j >= 0; j --) { //뒤에서 부터 각 자릿수를 배열에 입력
arr[st[j] - 'A'] += 1 * x;
x *= 10;
}
}
sort(arr, arr + 26, cmp);
int y = 9;
for (int i = 0; i < 10; i++) { // 자릿수의 합이 제일 큰 순으로 9부터 숫자를 부여
sum += arr[i] * y;
y--;
}
printf("%d", sum);
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
퇴사_백준14501 (0) | 2023.08.29 |
---|---|
나이트의 이동_백준7562 (0) | 2023.08.29 |
이동하기_백준11048 (0) | 2023.08.29 |
경비원_백준2564 (0) | 2023.08.17 |
창고 다각형_백준2304 (0) | 2023.08.17 |