public static void main(String[] args) {
System.out.println("Map을 활용해서 숫자 5개를 입력 받아 최빈값 구하기" +
"\n최빈 값이 두개라면 -1을 출력");
Map<Integer, Integer> inputList = new HashMap<>(); // 맵을 만든다
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
int input = sc.nextInt();
inputList.put(input, inputList.getOrDefault(input, 0) + 1);
// put 은 ( 여기에, 이걸 넣는다)
// getOrDefault 는 (get 할 것, [get 할 것이 없다면(=null) 이라면 입력할 것] = 실행할 것)
}
int max = 0;
int result = 0;
for (int inputKey : inputList.keySet()) { // inputKey 에 KeySet 한다. (Key 값을 Set 하는데 모든 Key 값이 나오도록)
System.out.println("숫자"+ inputKey+ "을 "+ inputList.get(inputKey)+ "번 입력했습니다.");
int a = inputList.get(inputKey);
if (max < a) { // 최빈값 1개
max = a;
result = inputKey;
} else if (max == a) { // 최빈값 은 횟수를 비교해서 구하니까 횟수가 같으면 최빈값이 2개 이상이다.
result = -1;
}
}
System.out.println("최빈 값은 " + result);
}
컬렉션 맵을 이용한 최빈값 구하기이다. 만약 최빈값이 2개 이상이면 -1을 반환한다.
최빈값 구하기ver.map 을 하면서 약 3시간 정도 고민했다. 그만큼 기본이 정립되지 않았었다는 말인데 그대로 다음 진도로 넘어갔으면 어떤 모습이었을지 눈에 훤하다.
이후에 팀원분께 클래스에 관한 짧은 강의를 듣고 다시금 자바 강의들을 살펴보았다. 전보다 훨씬 더 잘 들어왔고 조금 천천히 들으면 강의에서 전달하고자 하는 큰 내용들은 모두 이해할 것 같다.
[TIL#18] Study] 코딩 테스트 6 (0) | 2023.11.09 |
---|---|
[TIL#17] Study] 코딩 테스트 5 (0) | 2023.11.08 |
[TIL#16] Study] 코딩 테스트 4 (1) | 2023.11.04 |
[TIL#15-2] Study] 코딩 테스트 3 (1) | 2023.11.03 |
[TIL#13] Study] 코딩 테스트 1 (0) | 2023.11.01 |