sm 기술 블로그
90. 10815(숫자카드) 본문
import sys
input = sys.stdin.readline
N = int(input()) # 상근이가 가지고 있는 카드 개수
haveCard = list(set(map(int, input().split())))
M = int(input()) # 비교할 카드 개수
compareCard = list(map(int, input().split()))
cardDic = {haveCard[i]: 1 for i in range(len(haveCard))}
for val in compareCard:
try:
cardDic[val]
print("1", end=" ")
except:
print("0", end=" ")
문제요약
상근이가 가지고 있는 카드의 숫자와 제시된 카드의 숫자가 같은지 비교하시오.
설명
파이썬에서는 N,M이 따로 필요없다.
먼저 카드 수를 입력받고 데이터 사전에 저장해주었다.
cardDic = {haveCard[i]: 1 for i in range(len(haveCard))}
가지고 있는 카드를 무엇이다라고 표시하기위해 사용하였다.
데이터사전사용시 만약 없는 key값이 들어온다면 예외가 발생한다.
따라서 예외가 발생한다면 가지고 있지 않은 카드의 수라는 의미와 같다.
for val in compareCard:
try:
if(cardDic[val] == 1):
print("1", end=" ")
except:
print("0", end=" ")
추가
간단하게 리스트 항목을 비교하는 방법이 있다.
- if A in B
B안에 A가 있다면 참이다.
위 문법을 적용하면,
import sys
input = sys.stdin.readline
input()
haveCard = set(map(int, input().split()))
input()
compareCard = list(map(int, input().split()))
for val in compareCard:
if val in haveCard:
print("1", end=" ")
else:
print("0", end=" ")
다음과 같이 간단하게 비교 가능하다.
단, 가지고있는 카드를 집합으로 하지 않으면 시간초과가 발생한다.
'문제 > 백준_파이썬' 카테고리의 다른 글
92. 1620(나는야 포켓몬 마스터 이다솜) (0) | 2022.06.19 |
---|---|
91. 14425 (문자열 집합) (0) | 2022.06.19 |
89. 18870 (좌표압축) (0) | 2022.06.18 |
88. 10814(나이순 정렬) (0) | 2022.06.17 |
87. 1181(단어 정렬) (0) | 2022.06.16 |
Comments