[10816] 숫자 카드 2

백준 문제 풀이

10816번: 숫자 카드 2

  • 해설

      이 문제는 조금 조심할 부분이 있다.
      입력, 출력 시 시간까지 꼼꼼히 해야 시간초과가 안 걸리기 때문이다.
        
      현재 가지고 있는 카드들, 카드가 있냐고 묻는 질문에 따라 카드 수를
      카운트하면 된다.
        
      우선 입력을 좀더 빠르게 받으려면 import sys 를 하고,
      N = int(sys.stdin.readline())
      cards = list(map(int, sys.stdin.readline().split()))
      M = int(sys.stdin.readline())
      questions = list(map(int, sys.stdin.readline().split()))
      counts = {}
        
      sys.stdin.readline() 으로 입력을 받는다. input()과 같은 일을 하고,
      좀더 빠르다고 보면 된다.
      cards에 현재 가지고 있는 카드 수, 질문들은 questions에 받는다.
        
      counts에는 현재 가지고 있는 카드들의 중복된 카드 수를 계산한다.
      for i in cards:
      	if i not in counts:
      		counts[i] = 1
      	else:
      		counts[i] += 1
        
      counts에 카드 개수가 있어서 각 질문별 카드수를 출력하면 된다!
      for i in questions:
          if i in counts:
              print(counts[i], end=' ')
          else:
              print(0, end=' ')
    
  • 답안

      import sys
        
      if __name__ == '__main__':
          N = int(sys.stdin.readline())
          cards = list(map(int, sys.stdin.readline().split()))
          M = int(sys.stdin.readline())
          questions = list(map(int, sys.stdin.readline().split()))
          counts = {}
        
          for i in cards:
              if i not in counts:
                  counts[i] = 1
              else:
                  counts[i] += 1
        
          for i in questions:
              if i in counts:
                  print(counts[i], end=' ')
              else:
                  print(0, end=' ')