Koala - 13기/기초 알고리즘 스터디

[BOJ/java] 14724번 관리자는 누구?

msms0324 2024. 1. 14. 16:03

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

 

14724번: 관리자는 누구?

PROBRAIN, GROW, ARGOS, ADMIN, ANT, MOTION, SPG, COMON, ALMIGHTY중 동문 커뮤니티 관리자로 선발되는 후보가 소속한 동아리의 이름을 대문자로 출력한다.

www.acmicpc.net

 

 

문제코드

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        Map<String,Integer> mymap= new LinkedHashMap<String,Integer>();
        int a=Integer.parseInt(br.readLine());
        mymap.put("PROBRAIN",0);
        mymap.put("GROW",0);
        mymap.put("ARGOS",0);
        mymap.put("ADMIN",0);
        mymap.put("ANT",0);
        mymap.put("MOTION",0);
        mymap.put("SPG",0);
        mymap.put("COMON",0);
        mymap.put("ALMIGHTY",0);



        for(String key:mymap.keySet()){
            
            String arr[]=br.readLine().split(" ");
            for(int i=0;i<a;i++){
                if(mymap.get(key)<Integer.parseInt(arr[i])){
                    mymap.put(key,Integer.parseInt(arr[i]));
                }
            }


        }

        int max=0;
        String maxkey="";
        for(String key:mymap.keySet()){
            if(max<mymap.get(key)){
                max=mymap.get(key);
                maxkey=key;



            }

        }
        bw.write(maxkey);
        bw.flush();
        bw.close();
        br.close();


    }


}

 

 

풀이

순서가 있는 Linked HashMap을 사용하여 동아리이름을 키값으로 하여 초기값 0을 넣는다.

그리고 키값의 개수만큼 반복하여 문장을 입력받는데, 그 문장을 split메서드로 공백기준으로 분리하고 정수로 바꿔준다.

그리고 분리된 정수가 Linked HashMap에 있는 값보다 크다면, 분리된 정수로 값을 대체한다.

그러면 받은 문장에서 가장 큰 정수만이 Linked HashMap에 들어갈 것이고,

우리는 거기서 가장 큰수가 어느 키에 해당하는지 출력하면된다.

다시한번 키의 수만큼 반복을 돌려서 최대값을 찾아내고, 그때의 키값을 출력한다.