HashMap을 써서 제목과 입력 횟수를 저장하고 keySet을 순환하면서 최대로 입력받는 제목을 구함과 동시에 사전순으로 제일 빠른 제목을 찾았다.
우선 HashMap을 써서 제목을 입력받을 때마다 몇 번 입력받았는지 Value에 저장했다.
Scanner scanner = new Scanner(System.in);
String title;
HashMap<String, Integer> list = new HashMap<>();
int n = scanner.nextInt();
int max = 1;
String result;
for(int i = 0; i<n; i++)
{
title = scanner.next();
list.put(title, list.containsKey(title) ? list.get(title) + 1 : 1);
}
이렇게 하면 Key에 제목이 저장되고 Value에 입력 횟수가 저장된다.
다음으로 for문을 써서 keySet을 돌면서 가장 많이 입력된 제목들 중 사전순으로 가장 빠른 제목을 찾았다.
for(String i : list.keySet())
{
if(list.get(i) > max)
{
result = i;
max = list.get(i);
}
else if(list.get(i) == max && i.compareTo(result) < 0)
{
result = i;
}
}
입력받은 횟수가 max 보다 크면 result와 max 값을 해당하는 값으로 바꿔주고, 입력받은 횟수가 max와 같으면 result만 해당 값으로 바꿔준다.
결과 코드
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String title;
HashMap<String, Integer> list = new HashMap<>();
int n = scanner.nextInt();
int max = 1;
String result;
for(int i = 0; i<n; i++)
{
title = scanner.next();
list.put(title, list.containsKey(title) ? list.get(title) + 1 : 1);
}
result = list.keySet().toArray()[0].toString();
for(String i : list.keySet())
{
if(list.get(i) > max)
{
result = i;
max = list.get(i);
}
else if(list.get(i) == max && i.compareTo(result) < 0)
{
result = i;
}
}
System.out.println(result);
}
}
'백준' 카테고리의 다른 글
1927번:최소 힙(Java) (0) | 2023.02.20 |
---|---|
11286번:절댓값 힙(Java) (0) | 2023.02.20 |
1158번: 요세푸스 문제(Java) (0) | 2023.02.16 |
11399번: ATM(Java) (0) | 2023.02.12 |
1406번: 에디터(Java) (0) | 2023.02.07 |