문제 :
https://www.acmicpc.net/problem/1339
접근 :
- 받은 문자열을 숫자의 형태로 Map 에 저장한다 key 는 문자1개에 해당하고, 값은 자리수를 곱한 값이다.
EX>
2
GCF
ACDEB
--------- 위 입력에 대한 결과 ---------------
A : 10000
B : 1
C : 1010
D : 100
E : 10
F : 1
G : 100
- Map 을 value 를 기준으로 내림차순으로 정렬한 후 9에서 부터 1씩 감소시키면서 곱하면서 모두 더한다.
EX >
90000
8080
700
600
50
4
3
ans = 99437
코드 구현 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map<Character,Integer> alpha_map = new HashMap<>();
int t = Integer.parseInt(br.readLine());
String input_str;
for(int i = 0 ; i < t ; i++) {
input_str = br.readLine();
for (int j = 0; j < input_str.length(); j++) {
int val = (int) Math.pow(10, input_str.length()-j-1);
alpha_map.put(input_str.charAt(j), val + alpha_map.getOrDefault(input_str.charAt(j), 0));
}
}
int cnt = 9;
long ans = 0;
for(int val : alpha_map.values().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList())) {
ans += (long) val * cnt--;
}
System.out.println(ans);
br.close();
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 프로그래머스 디펜스 게임_우선순위 큐 (0) | 2024.08.30 |
---|---|
[JAVA] 프로그래머스 리코쳇 로봇_탐색 (2) | 2024.08.28 |
[JAVA] 백준 1092 도서관_구현 (0) | 2024.08.08 |
[JAVA] 백준 1092 배_최소힙 (0) | 2024.08.06 |
[JAVA] 백준 1744 수 묶기_최소힙&최대힙 (0) | 2024.08.05 |