공부하기/백준

[Java] 백준 풀기 11557 - Yangjojang of The Year

XEV 2023. 7. 19. 23:53

자바 백준 11557번

브론즈 1

https://www.acmicpc.net/problem/11557

 

11557번: Yangjojang of The Year

입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다. 타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 정렬

 

 

 

 

 

문제 풀기

테스트 개수 만큼 for loop을 실행시킨다.

학교의 이름과 술 소비량을 입력받으면서 소비량이 이전에 입력 받은 값보다 큰지 확인을 하고 만약 크다면 그 값과 학교 이름을 저장한다. 모든 학교와 소비량이 입력되면 최대 소비량 데이터를 얻을 수 있다.

최대값 찾기 메서드의 최종 데이터를 AbstractMap을 이용하여 반환 후 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;
import java.util.Map;
import java.util.AbstractMap;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 테스트 케이스의 개수 T를 입력받음
        int T = sc.nextInt();

        for (int t = 0; t < T; t++) {
            // 학교의 개수 N을 입력받음
            int N = sc.nextInt();

            // 최대 술 소비량과 학교 이름을 찾음
            Map.Entry<String, Integer> maxAlcoholEntry = findMaxAlcoholConsumption(sc, N);

            // 술 소비가 가장 많은 학교 이름 출력
            System.out.println(maxAlcoholEntry.getKey());
        }
    }
    
    // 학교 이름과 술 소비량을 입력받고, 최대 술 소비량과 학교 이름을 반환하는 함수
    public static Map.Entry<String, Integer> findMaxAlcoholConsumption(Scanner sc, int N) {
        // 최대 술 소비량을 저장할 변수 초기화
        int maxAlcoholConsumption = -1;
        String maxAlcoholSchool = "";

        for (int i = 0; i < N; i++) {
            // 학교 이름과 술 소비량을 입력받음
            String schoolName = sc.next();
            int alcoholConsumption = sc.nextInt();

            // 최대 술 소비량인 경우 최대값과 해당 학교 이름을 업데이트
            if (alcoholConsumption > maxAlcoholConsumption) {
                maxAlcoholConsumption = alcoholConsumption;
                maxAlcoholSchool = schoolName;
            }
        }

        // 최대 술 소비량과 학교 이름을 Map.Entry 형태로 반환
        return new AbstractMap.SimpleEntry<>(maxAlcoholSchool, maxAlcoholConsumption);
    }

}