📝 문제 설명

숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.

🤔 문제 분석 및 접근 방식

💡 풀이 아이디어 / 로직

  1. HashMap<Integer, Integer> 타입의 map을 생성한다. Key는 숫자 카드의 숫자, Value는 해당 카드의 개수를 저장한다.
  2. BufferedReaderStringTokenizer를 사용해 N개의 숫자 카드를 효율적으로 입력받는다.
  3. for 반복문을 N번 실행하면서, 각 숫자 카드(card)를 map.getOrDefault(card, 0) + 1 로직을 사용해 map에 빈도수를 기록한다.
  4. BufferedReader로 M을 입력받는다.
  5. 결과를 한 번에 출력하기 위해 StringBuilder를 생성한다.
  6. StringTokenizer를 사용해 M개의 찾고자 하는 숫자들을 입력받는다.
  7. for 반복문을 M번 실행하면서, 찾고자 하는 숫자(target)를 map에서 직접 조회(map.getOrDefault(target, 0))한다.
  8. 조회한 결과(카드의 개수)를 StringBuilder에 추가하고 공백을 덧붙인다.