Java
[백준 1339] 단어 수학 (JAVA)
iheeeee6-6
2023. 8. 8. 23:01
728x90
https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
난이도 : 골드4
그리디 알고리즘 문제로,
1. 알파벳별의 배열을 생성하여 A~Z를 0~25의 인덱스로 가정한다!
알파벳의 자릿수에 따른 값을 배열에 넣는다!
ex) ABC
첫번째 A는 알파벳 배열의 0번째에 해당한다. 100자리의 수이기에 알파벳배열에 +100
두번째 B는 알파벳 배열의 1번째, 10의 자릿수이기에 +10
세번째 C는 알파벳 배열의 2번째, 1의 자리이기에 +1
이렇게 알파벳 배열에 자릿수에 따른 값을 다 세팅한다.
2. 정렬을 하고, 값이 큰 알파벳부터 9를 곱하여 최종값에 더한다.!!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] score = new int[26];
for (int i = 0; i < n; i++) {
char[] c = br.readLine().toCharArray();
for (int j = 0; j < c.length; j++) {
score[c[j] - 65]+=Math.pow(10,c.length -j-1);
}
}
int result=0;
int num=9;
Arrays.sort(score);
for(int i=25;i>=0;i--) {
if(score[i]==0) break;
result+=score[i]*num;
num--;
}
System.out.println(result);
}
}