백준-1339 : 단어 수학
https://www.acmicpc.net/problem/1339
풀의
- 입력받은 단어를 입력받은 알파벳들을 알파벳 별로 얼마나 입력 받았는지 기록한다.
- 우선 순위 큐에 넣은 뒤 큰 값부터 꺼내어 가중치를 9부터 1씩 줄이면 곱해준다.
코드 (java)
import java.util.*;
public class Baejoon1339 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine(); // 버퍼 비우기
int result = 0;
int weight = 9;
HashMap<Character, Integer> alphMap = new HashMap<>();
for (int i = 0; i < n; i++) {
String tempStr = sc.nextLine();
int power = -1;
// 입력 받은값들 채워넣기
for (int j = tempStr.length() - 1; j >= 0; j--) {
alphMap.put(tempStr.charAt(j), alphMap.getOrDefault(tempStr.charAt(j), 0) + power);
power *= 10;
}
}
PriorityQueue<Integer> heap = new PriorityQueue<>();
// 정렬하기
for (Character key : alphMap.keySet()) {
heap.add(alphMap.get(key));
}
// 나온순서대로 순서대로 곱해주기
while (!heap.isEmpty()) {
result += -heap.poll() * weight--;
}
System.out.println(result);
}
}
'Algorithm' 카테고리의 다른 글
[BFS] 백준-10610 30 실버4 (0) | 2023.04.11 |
---|---|
[BFS] 백준-2437 저울 골드2 (1) | 2023.04.10 |
[BFS] 백준-7576 토마토 골드5 (1) | 2023.04.08 |
[해시] 백준-9375 패션왕 신해빈 실버3 (Java) (1) | 2023.04.08 |
[완전 탐색] 백준-12100 2048 (Easy) 골드2 (Java) (0) | 2023.04.06 |