CODING TEST

백준 10807번 - 개수 세기

우진하다 2023. 5. 15. 22:19

나의 풀이.

이미 풀어봤던 문제인데 이번에는 얼마전 라이브 세션에서 최빈값 구할 때 대표적인 방법이
getOrDefault() 메서드라고 배웠는데 이걸 사용해서 풀어보겠다.

// 이전에 풀었던 방식 - 배열, 반복문
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        int[] arr = new int[count];
        int matchNumberCount = 0;
    
        for (int i = 0; i < count; i++) {
            arr[i] = sc.nextInt();
        }
        
        int value = sc.nextInt();
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]) {
                matchNumberCount++;
            }    
        }
        System.out.println(matchNumberCount);
    }
    
}

import java.util.Hashtable;
import java.util.Scanner;

public class CountingNumberTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int inputLength = sc.nextInt();
        int[] inputNumberArray = new int[inputLength];
        Hashtable<Integer, Integer> ht = new Hashtable<>();

        for (int i = 0; i < inputNumberArray.length; i++) {
            inputNumberArray[i] = sc.nextInt();
            ht.put(inputNumberArray[i], ht.getOrDefault(inputNumberArray[i], 0) + 1);
        }

        int findValue = sc.nextInt();
        Integer count = ht.get(findValue);
        if (count != null) {
            System.out.println(count);
        } else {
            System.out.println(0);
        }
    }
}

 


문제 출처: https://www.acmicpc.net/problem/10807