첫번째 풀이
가장 큰 자릿수에 있는 알파벳부터 큰 값을 지정해줬지만 반례가 존재했다.
10
ABB
BB
BB
BB
BB
BB
BB
BB
BB
BB
A: 9, B: 8 인 경우보다
B: 9 , A: 8 일 경우가 더 큰 수가 된다.
두번째 풀이
알파벳별 각 자릿수의 합을 구해 배열에 저장한 후, 배열을 내림차순 정렬을 해준다.
차례대로 9~0까지 곱해주며 합계를 구하면 정답이 된다.
ABC
BDA
두 문자열이 있으면
A : 101
B : 110
C : 1
D : 10
내림차순 정렬하여 곱하면
110*9 + 101*8 + 10*7 + 1*6
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int n;
static Integer arr[]; // Arrays.sort 내림차순을 위해 Integer로 선언
public static void main(String args[]) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(br.readLine());
arr=new Integer[27];
Arrays.fill(arr,0);
for(int i=0;i<n;i++){
String s=br.readLine();
for(int j=0;j<s.length();j++){
char c=s.charAt(j);
arr[c-'A']+=(int)Math.pow(10,s.length()-j-1);
}
}
Arrays.sort(arr,(a,b)->b-a);
int ans=0;
int val=9;
for(int i=0;i<27;i++){
if(arr[i]==0)break;
ans+=val*arr[i];
val--;
}
System.out.println(ans);
}
}
#그리디