백준 9375번
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 테스트 갯수 입력
int t = in.nextInt();
for (int i = 0; i < t; i++) {
int size = in.nextInt();
HashMap<String, Integer> map = new HashMap<>();
for (int j = 0; j < size; j++) {
String n = in.next();
String m = in.next();
// 아무것도 안입은 상태도 갯수로 세어준다.
map.put(m, map.getOrDefault(m, 1) + 1);
}
int answer = 1;
for (String s : map.keySet()) {
int k = map.get(s);
answer *= k;
}
// 알몸인 상태 1가지 경우를 빼준다.
System.out.println(answer - 1);
}
}
}
백준 12845번 (그리디)
import java.util.Scanner;
import java.util.*;
public class problem158 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
Integer[] arr = new Integer[t];
for (int i = 0; i < t; i++) {
arr[i] = in.nextInt();
}
Arrays.sort(arr,Comparator.reverseOrder());
int sum = 0;
// 내림차순을 했음으로, 최대값은 첫번째 인덱스 값이다.
int max = arr[0];
for (int j = 1; j < t; j++) {
sum += max + arr[j];
}
System.out.print(sum);
}
}
백준 5545번 (그리디)
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class problem157 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 토핑의 종류
int t = in.nextInt();
// 도우 가격
int n = in.nextInt();
// 토핑 가격
int m = in.nextInt();
// 도우 칼로리
int c = in.nextInt();
Integer[] arr = new Integer[t];
for (int i = 0; i < t; i++) {
// 토핑 칼로리
arr[i] = in.nextInt();
}
// 토핑을 하나도 추가하지 않았을경우
int total = c / n ;
Arrays.sort(arr, Comparator.reverseOrder());
//가격에 비해 칼로리를 비교해야함
int tempM = n;
int tempC = c;
for(int i = 0 ; i < t; i++){
// 기본 도우 가격에 토핑 가격을 추가
tempM += m;
// 기본 도우 칼로리에 토핑 칼로리를 추가
tempC += arr[i];
int tempTotal = tempC / tempM;
if(total > tempTotal){
break;
}else{
total = tempTotal;
}
}
System.out.print(total);
}
}