본문 바로가기
TIL🔥/코딩테스트

[항해99클럽] Java 비기너_Day 15 학생 인기도 측정

by hk713 2025. 4. 18.

오늘의 문제 >> https://www.acmicpc.net/problem/25325

 

[ 생각 흐름 ]

이름을 먼저 HashMap에 담아놓고

for문을 돌면서 이름별로 카운트를 하면 되지 않을까?

 

[ JAVA ] 

import java.util.*;

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

        String students = sc.nextLine();
        String[] studentsArr = students.split(" ");

        Map<String, Integer> countMap = new HashMap<>();
        for(String name: studentsArr){
            countMap.put(name, 0);
        }

        for(int i=0; i<n; i++){
            String likeNames = sc.nextLine();
            String[] likeNameArr = likeNames.split(" ");

            for(String name:likeNameArr){
                countMap.put(name, countMap.getOrDefault(name,0)+1);
            }
        }

        Arrays.sort(studentsArr, (a,b) -> {
            int countA = countMap.get(a);
            int countB = countMap.get(b);
            if (countA != countB){
                return countB-countA;
            }else{
                return a.compareTo(b);
            }
        });

        for(String name: studentsArr){
            System.out.println(name+" "+countMap.get(name));
        }
    }
}

댓글