해피 코딩!

[백준] 10816번 숫자카드 2 본문

알고리즘

[백준] 10816번 숫자카드 2

지속가능한 성장을 2021. 1. 9. 16:16

문제링크

해답 코드

import collections
dic = collections.defaultdict(int)
n = int(input())

card_lst = list(map(int, input().split()))

m = int(input())

find_card = list(map(int, input().split()))

for i in card_lst:
    dic[i] += 1


answer = []

for i in find_card:
    if dic.get(i):
        answer.append(dic.get(i))
    elif not dic.get(i):
        answer.append(0)

print(' '.join(map(str, answer)))

문제풀이

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

두 번째로 받는 입력에서 상근이가 받은 카드를 저장해야 하는 문제입니다.

네 번째 입력에서 상근이가 저장한 카드의 갯수를 확인하는 과정이 필요하기에

orderdict를 사용해서 미리 카운팅을 한 값을 다시 반복문을 통하여 확인합니다.

시간 복잡도를 해결할 수 있는 방법으로는 두 번쨰 리스트에서 값을 저장한 뒤

네 번째 입력에서 각각의 값을 받게 되는 반복문을 돌리며 값이 dic에 있다면 answer에 카드의 갯수를 입력하게 되면 복잡도를 해결할 수 있을거라 생각합니다.

'알고리즘' 카테고리의 다른 글

[백준] 17298 오큰수  (0) 2021.01.06
[백준] 9012번 괄호  (0) 2021.01.06
[백준] 1541번 잃어버린 괄호  (0) 2021.01.01
[백준] 2108 통계학  (0) 2020.12.31
[백준] 11399 ATM  (0) 2020.12.31
Comments