0. 각 알파벳의 총 크기를 구해, 그리디하게 숫자를 부여한다
- ex) AB, BC의 경우, A는 10의자리에 1번 나오니 10, B는 11, C는 1
- B가 가장 크므로 9, 그다음인 A에 8, C에 7을 주는 식
1. 모든 수에 대해 알파벳별로 등장 자릿수에 따라 값을 누적시킨다
2. 종료시 내림차순 정렬, 값이 큰 순으로 9~0까지 값을 부여하며 진행한다
- 알파벳이 10개 이하로 존재하여도, tmp배열의 초깃값이 0이므로 문제 없음
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main{
public static void main(String[] args)throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Integer[] tmp = new Integer[26];
int N = pint(br.readLine());
int num=9, sum=0;
for (int i=0; i<26; i++)tmp[i]=0;
for (int i = 0; i < N; i++) {
String s = br.readLine();
for (int j = 0; j < s.length(); j++)tmp[s.charAt(j)-'A']+= (int)Math.pow(10, s.length()-j-1);
}
Arrays.sort(tmp, Comparator.reverseOrder());
for (int i = 0; i < 10; i++)sum+=tmp[i]*num--;
System.out.println(sum);
}
static int pint(String s) {
return Integer.parseInt(s);
}
}
'알고리즘 문제 풀이 > BOJ 골드' 카테고리의 다른 글
[백준] 19236 - 청소년 상어 (0) | 2021.11.03 |
---|---|
[백준] 20058 - 마법사 상어와 파이어스톰 (0) | 2021.10.25 |
[백준] 21610 - 마법사 상어와 비바라기 (0) | 2021.10.25 |
[백준] 14938 - 서강그라운드 (0) | 2021.10.03 |
[백준] 14891 - 톱니바퀴 (0) | 2021.09.27 |
[백준] 16919 - 봄버맨 2 (0) | 2021.09.25 |
[백준] 4256 - 트리 (0) | 2021.09.25 |