알고리즘
[백준] 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
에 카드의 갯수를 입력하게 되면 복잡도를 해결할 수 있을거라 생각합니다.