BJ10816_숫자_카드_2_python

Kidon Seo·2021년 4월 23일
0

1. 문제링크

https://www.acmicpc.net/problem/10816

2. 풀이 전 계획과 생각

< 정보 정리 >

1) 입력값: 카드 수 N, N개 카드 값, 카드 수 M, M개 카드 값
2) 출력값: M개 카드 값마다 N에서 발생하는 수
3) 제약조건:

- 1 <= N, M <= 500,000
- -10,000,000 <= N개 카드 값, M개 카드 값 <= 10,000,000

4) 예외케이스: 없음

< 공통 로직 >

  • N 개의 카드 값마다 나오는 횟수를 정리한다.
  • M 개의 카드 값이 N 개의 카드 값이 나오는 횟수를 정리한 테이블에서 조회한다.
  • 조회 값이 있을 경우, 해당 값을 출력한다.
  • 조회 값이 없을 경우, 0을 출력한다.

3. 풀이

def count_cards_2():
  n = int(input())
  cards = list(map(int, input().split()))
  m = int(input())
  cards_to_count = list(map(int, input().split()))
  table = {}
  for i in cards:
    if i in table:
      table[i] += 1
    else:
      table[i] = 1
  for i in cards_to_count:
    if i in table:
      print(table[i], end = ' ')
    else:
      print(0, end = ' ')
      

count_cards_2()

4. 풀이하면서 막혔던 점과 고민

Hashtable을 만들어서 사용해서 비교적 수월하게 풀 수 있었다.

5. 풀이 후 알게된 개념과 소감

Binary Search를 통해 해당 값이 있는지 풀 수도 있을 것 같다.

0개의 댓글