매일 Algorithm

신재원·2023년 3월 4일
0

Algorithm

목록 보기
55/243

백준 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);


    }
}

0개의 댓글