import sys
input=sys.stdin.readline
a,b=map(int,input().split())
arr=dict() #딕셔너리는 해시값을 참조하기 때문에 훨씬 자료구조 사용에 좋다
count=0
for _ in range(a):
s1=sys.stdin.readline()
arr[s1]=True
for _ in range(b):
s2=sys.stdin.readline()
if s2 in arr.keys():
count+=1
print(count)
BOJ 14225 문제입니다...... 이 코드가 가장 시간이 짧더라구요...
당연히 딕셔너리가 해쉬값활용이니 시간이 짧다는건 알겠는데...
'arr[s1]=True' 이게 뭔 뜻인가요...?
이게 진짜 궁금합니다..... 뭔말인지....
arr의 키가 s1인 항목의 값을 true로 바꾼다는 뜻이에오
변수명은 arr이고 타입은 딕셔너리고 총체적 난국이네 ㅋㅋ
파이썬은 전혀 모르지만 코드는 쉽네 처음 인풋으로 그 다음 인풋이 몇개가 올지 파악하고 그 횟수만큼 돌면서 arr 라는 이름의 해시맵에 새로 인풋으로 들어온 단어가 존재함을 알리고 그 다음 받는 단어들이 이전에 만들어둔 사전에서 중복 횟수가 몇이나 되는지 각 단어마다 쉬알리는거네
요약하자면 궁금한 그 부분은 "사전에 단어를 추가" 라고 생각하면 됨 true 자체에 큰 의미는 없음 해시맵 말고 해시셋을 써도 됨 자료형 없는 언어는 매번 볼 때마다 기분 안 좋다
값을 넣어야 키가 생기니까? 그냥 arr.keys()에서 찾을려고 암거나 넣어둔 거 같아요
누가짠 코든지 저딴걸 왜 보고 있냐 ㅋㅋㅋ
배열은 익숙하지?