10816 숫자 카드 2

DONGJIN IM·2022년 3월 7일
0

코딩 테스트

목록 보기
22/137

문제 이해

숫자 배열이 주어질 것이다.
이후 특정 숫자가 몇 개 주어질 것인데, 특정 숫자가 배열에 몇 개 존재하는지 출력하는 문제이다.


문제 풀이

알고리즘을 생각하기 이전 JAVA가 가진 여러 자료구조 중 한 개가 생각났다.

바로 Map!

Map을 활용하면 중복 처리도 수월해지고, 이후 특정 숫자를 Search할 때도 편리해 질 것이라고 생각하였다.
따라서 HashMap을 활용하여 문제를 해결하였다


코드

import java.io.*;
import java.util.*;

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

		FastReader sc = new FastReader();

		HashMap<Integer, Integer> maps = new HashMap<>();
		// Key : 숫자 배열에 존재하는 값, Value : Key가 배열에 존재하는 개수
		int N = sc.nextInt();
		int tmp;
		for(int i =0;i<N;i++) {
        /*
        숫자 배열을 입력 받는 과정
        tmp에 숫자가 입력되고, 만약 이전에 배열에 존재했었다면 map에 
        값이 존재할 것이다.
        반대로, 배열에 존재하지 않았다면 map에는 값이 존재하지 않는다.
        따라서, getOrDefault()메서드를 활용하여, 처음일 경우 1을, 
        아닐 경우 원래 value값에 1을 더해줬다.
        */
			tmp = sc.nextInt();
			maps.put(tmp, maps.getOrDefault(tmp, 0)+1);
		}

		int M = sc.nextInt();
		StringBuilder sb = new StringBuilder();
		for(int i =0;i<M;i++) {
			tmp = sc.nextInt();
			sb.append(maps.getOrDefault(tmp,0)+" ");
        // 특정 숫자가 존재한다면 Value가 존재할 것이고, 
        // 존재하지 않는다면 null이 반환 된다.
        // 따라서 getOrDefault()를 통해 null일 경우 0을 반환하도록 했다.
		}
		System.out.println(sb);
	}
	
	static class FastReader // 빠른 입력을 위한 클래스
}

결과

profile
개념부터 확실히!

0개의 댓글

관련 채용 정보