[백준/BOJ] 1339. 단어 수학 [Gold 4]

jychan99·2022년 1월 20일
0
post-thumbnail
  1. 단어 수학

문제출처 : https://www.acmicpc.net/problem/1339

code

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int N, i, j, max, index, result = 0;
	int alpha[26] = { 0 }, value[26] = { 0 };
	string word[10];
	cin >> N;
	for (i = 0; i < N; i++)
		cin >> word[i];
	
	for (i = 0; i < N; i++)
		for (j = 0; j < word[i].length(); j++)
			alpha[word[i][j] - 'A'] += pow(10, word[i].length() - 1 - j);

	for (j = 9; j >= 0; j--)
	{
		max = 0;
		index = -1;
		for (i = 0; i < 26; i++)
		{
			if (max < alpha[i] && value[i] == 0)
			{
				max = alpha[i];
				index = i;
			}
		}
		if (index >= 0)
			value[index] = j;
	}

	for (i = 0; i < 26; i++)
	{
		if (alpha[i] != 0)
		{
			result += alpha[i] * value[i];
		}
	}

	cout << result;

	return 0;
}

브루트포스알고리즘으로 풀었다.
ㅈㄴ 무식하게 풀었다는 뜻이다.

우선 자릿수에 따라 알파벳배열에 값을 더해준다.
예를들어
2
GCF
ACDEB이면

A = 10000
B = 1
C = 1001
D = 100
E = 10
F = 1
이런식으로 값을 매기고, 값이큰순서대로 9,8,7,6,5,...를 매겨주면된다.

그리고 A9+C8+D*7.....이런식으로 곱해주면된다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글