[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=' ')