본문 바로가기

알고리즘/C++

단어수학_백준1339

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