[10816] 숫자 카드 2
| Algorithms / 백준 문제 풀이 모음 # Python, Sliver 4
백준 문제 풀이
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=' ')