컴퓨터 공학/백준
[백준] JAVA 자바 : 단어 수학 (1339번)
kim-dev
2024. 3. 22. 16:50
반응형
문제는 대략 저렇읍니다.
내가 보기엔 직전 문제인 신입 사원이랑 이 문제랑 난이도가 바뀌어야 할 것 같다...
나는 어떻게 해결했냐면, 알파벳은 어차피 다 더해야 하는 수이므로 일단 자릿수만큼 1, 10, 100, 1000, ....으로 할당해서 같은 알파벳끼리 다 더해서 배열에 저장했다.
그리고 그 배열을 처음부터 다시 돌면서 가장 값이 높은 순서대로 9, 8, 7, 6, ..., 1까지 할당해서 곱해준 다음 sum에 다 합쳐서 출력해 주었다.
import java.lang.StringBuilder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class WordMath {
public static int stoi(String str) {
return Integer.parseInt(str);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Integer[] arr = new Integer[91];
for (int i=0; i<91; i++) {
arr[i] = 0;
}
int N = stoi(br.readLine());
for (int i=0; i<N; i++) {
String num = br.readLine();
int ten = 1;
for (int j=0; j<num.length(); j++) {
char temp = num.charAt(num.length()-1-j);
arr[temp] += ten;
ten *= 10;
}
}
Arrays.sort(arr, Collections.reverseOrder());
int result = 0;
int nine = 9;
for (int i=0; arr[i] != 0;i++) {
result += (arr[i] * nine);
nine--;
}
System.out.println(result);
br.close();
}
}
로그인
www.acmicpc.net