๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1339
๐ค ๋ฌธ์
๋ฏผ์์ด๋ ์ํํ์์์ ๋จ์ด ์ํ ๋ฌธ์ ๋ฅผ ํธ๋ ์์ ๋ฅผ ๋ฐ์๋ค.
๋จ์ด ์ํ ๋ฌธ์ ๋ N๊ฐ์ ๋จ์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ ๋จ์ด๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. ์ด๋, ๊ฐ ์ํ๋ฒณ ๋๋ฌธ์๋ฅผ 0๋ถํฐ 9๊น์ง์ ์ซ์ ์ค ํ๋๋ก ๋ฐ๊ฟ์ N๊ฐ์ ์๋ฅผ ํฉํ๋ ๋ฌธ์ ์ด๋ค. ๊ฐ์ ์ํ๋ฒณ์ ๊ฐ์ ์ซ์๋ก ๋ฐ๊ฟ์ผ ํ๋ฉฐ, ๋ ๊ฐ ์ด์์ ์ํ๋ฒณ์ด ๊ฐ์ ์ซ์๋ก ๋ฐ๋์ด์ง๋ฉด ์ ๋๋ค.
์๋ฅผ ๋ค์ด, GCF + ACDEB๋ฅผ ๊ณ์ฐํ๋ค๊ณ ํ ๋, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7๋ก ๊ฒฐ์ ํ๋ค๋ฉด, ๋ ์์ ํฉ์ 99437์ด ๋์ด์ ์ต๋๊ฐ ๋ ๊ฒ์ด๋ค.
N๊ฐ์ ๋จ์ด๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ ํฉ์ ์ต๋๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ฎ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
์๋ฆฟ์๊ฐ ํฐ ์ํ๋ฒณ ์์๋ก ๋์ ์ซ์๋ฅผ ๋ฐฐ์ ํด์ผ ๊ณ์ฐ์ ํ์ ๋ ๊ฐ์ฅ ํฐ ํฉ๊ณ๊ฐ ๋์ฌ ์ ์๋ค.
๋ฌธ์ ์ ์์ ์ ๋จ์ด ์ํ ์์ ์๋ฆฟ์๋ก ํํํด๋ณด๋ฉด, GCF = 100G + 10C + 1F ๋ก ํํํ ์ ์๊ณ , ACDEB = 10000A + 1000C + 100D + 10E + 1B๋ก ํํํ ์ ์๋ค.
๋ฐ๋ผ์, ์ด๋ ๊ฒ ์๋ฆฟ์๋ก ํํํ ์ํ๋ฒณ์ ๊ฐ๊ฐ ์ํ๋ฒณ์ด ์ธ๋ฑ์ค๋ก ๋ ๋ฐฐ์ด์ ๋ด์์ฃผ๊ณ ์ ๋ ฌํด์ค ํ, ๊ฐ์ด ๊ฐ์ฅ ๋์ ์ํ๋ฒณ๋ถํฐ 9๋ถํฐ ์์๋๋ก ๋ฐฐ์ ํด์ฃผ๋ฉด ๊ฐ์ฅ ํฐ ํฉ๊ณ๋ฅผ ์ป์ ์ ์๋ค.
๐ฉ Java ์ฝ๋
package com.algorithm.Baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main_1339_๋จ์ด_์ํ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] words = new String[N];
for(int loop =0; loop < N; loop++) {
words[loop] = br.readLine();
}
int rst = getSum(words);
System.out.println(rst);
br.close();
}
private static int getSum(String[] words) {
int[] alphabet = new int[26];
for(String word : words) {
int digit = word.length() - 1;
// ์ํ๋ฒณ A ๊ฐ 0๋ฒ ์ธ๋ฑ์ค, ๋จผ์ ๋์จ ์๋ถํฐ ์๋ฆฟ์ -1์ฉ Loop
for(char letter : word.toCharArray()) {
int index = letter - 'A';
alphabet[index] += (int) Math.pow(10,digit);
digit--;
}
}
// ์ ๋ ฌ
Arrays.sort(alphabet);
int index = alphabet.length-1;
int maxNumber = 9;
int sum = 0;
// ์๋ฆฟ์์ ๊ฐ์ด ๊ฐ์ฅ ๋์ ์์๋ถํฐ ์ฐจ๋ก๋ก ์ซ์ ๋ถ์ฌ
while(maxNumber >= 0 && alphabet[index] > 0) {
sum += alphabet[index] * maxNumber;
maxNumber--;
index--;
}
return sum;
}
}
'Algorithm > ๊ทธ๋ฆฌ๋(Greedy)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค, Java] 5186๋ฒ : ํํฐ๋ฅผ ์ด์ด๋ผ!!! (0) | 2022.07.06 |
---|---|
[๋ฐฑ์ค, Java] 10775๋ฒ : ๊ณตํญ (0) | 2022.06.21 |
[๋ฐฑ์ค, Java] 1052๋ฒ : ๋ฌผ๋ณ (0) | 2022.05.17 |
[ํ๋ก๊ทธ๋๋จธ์ค, Java] ๋จ์์นด๋ฉ๋ผ (0) | 2022.04.28 |
[๋ฐฑ์ค, Java] 16120๋ฒ : PPAP (0) | 2022.04.26 |