728x90
https://www.acmicpc.net/problem/1339
난이도 : 골드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);
}
}
'Java' 카테고리의 다른 글
[백준 3109] 빵집 (JAVA) (0) | 2023.08.11 |
---|---|
[백준 19701] 소 운전한다. (JAVA) (0) | 2023.08.03 |
[백준 1863] 스카이라인 쉬운거 (JAVA) (0) | 2023.08.02 |
[백준 5052] 전화번호 목록 (JAVA) (0) | 2023.07.19 |
[백준 2228] 구간 나누기 (JAVA) (0) | 2023.07.12 |