상세 컨텐츠

본문 제목

11557. Yangjojang of The Year

Algorithm

by aeongiii 2024. 12. 2. 09:38

본문

 


1. 문제 분석
    1) T개의 테스트케이스가 주어진다.
    2) 하나의 테스트케이스 안에서, [학교 이름 S + 술의 양 L]이 N줄 주어진다.
    3) 술의 양이 가장 많은 학교의 이름을 출력해야 한다.

2. 제약 조건
   1 <= N <= 100
   1 <= |S| <= 20
   0 <= L <= 10,000,000

3. 의사결정
    1) T를 입력받고, T만큼 for문을 돌린다.
    2) N을 받고, N만큼 [학교 이름 S + 술의 양 L]을 입력받는다.
    3) 술의 양은 모두 다르므로, key = L, value = S로 저장한다.
    4) L을 최대힙에도 저장한다.
    5) 최대힙에서 poll() 한 값을 key로 해서 value를 출력한다.


4. 문제 해결
    1) 문제 없이 바로 정답처리 되었다.

 

import java.util.*;
import java.io.*;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int T = Integer.parseInt(br.readLine()); // 테스트케이스 개수

        for (int i = 0; i < T; i++) {
            // 해시맵과 최대힙은 for문 안에서 만들어야 한다. (테스트케이스마다 초기화)
            HashMap<Integer, String> hashmap = new HashMap<>();
            PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());

            // N 입력받기
            int N = Integer.parseInt(br.readLine());

            for (int j = 0; j < N; j++) {
                // 한줄씩 입력받기
                StringTokenizer st = new StringTokenizer(br.readLine());
                String schoolName = st.nextToken();
                int alcohol = Integer.parseInt(st.nextToken());

                // 저장
                hashmap.put(alcohol, schoolName);
                maxHeap.add(alcohol);
            }

            // 저장이 끝났다면 출력
            System.out.println(hashmap.get(maxHeap.poll()));
        }
    }
}

'Algorithm' 카테고리의 다른 글

1524. 세준세비  (1) 2024.12.02
16466. 콘서트  (0) 2024.12.02
28114. 팀명 정하기  (0) 2024.12.01
1655. 가운데를 말해요  (0) 2024.11.30
9375. 패션왕 신해빈  (1) 2024.11.30

관련글 더보기