알고리즘/문제

[SWEA] 1204번 최빈수 구하기

You_mool 2024. 1. 18. 15:15
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

package search;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class sw1204 {

	public static void main(String[] args) throws FileNotFoundException {
		System.setIn(new FileInputStream("src/res/input.txt"));
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		int[] arr = new int[1000];
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		for(int test_case = 1; test_case <= T; test_case++)
		{
			int case_num = sc.nextInt();
			for(int i = 0 ; i < 1000; i++) {
				arr[i] = sc.nextInt();
			}
			for(int i: arr) {
				//1. HashMap을 사용해서 배열에 없는 숫자면 map에 추가.
				if(map.containsKey(i) == false) {
					map.put(i, 0);
				//2. 배열에 있는 숫자라면 해당 key의 value에 +1
				} else {
					map.put(i, map.get(i) + 1);
				}
			}
			System.out.print("#" + case_num + " ");
			//!! Collections.max()를 사용했는데 요소의 수가 많아지면 인식이 안되는 것 같아 사용하지 않음 
			//System.out.println(Collections.max(map.keySet()));
			
			//3. Map에 최대값 구하기 
			System.out.println(Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey()); 
			map.clear();
			

		}
	}

}

1. HashMap을 사용해서 배열에 없는 숫자면 map에 추가.

2. 배열에 있는 숫자라면 해당 key의 value에 +1.

3. Map에 최대값 구하기.

//!! Collections.max()를 사용했는데 요소의 수가 많아지면 인식이 안되는 것 같아 사용하지 않음 
System.out.println(Collections.max(map.keySet()));

!! Collections.max()를 사용했는데 요소의 수가 많아지면 인식이 안되는 것 같아 사용하지 않음.

이렇게 풀었는데 테스트 케이스 한개가 계속 오답이 나오네요,,,, 100개짜리 배열 만들어서 하시는 게 나을 것 같습니다.

반응형