문제
총 N개의 문자열로 이루어진 집합 S가 주어진다.
입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오.
풀이
내가 생각할 알고리즘
- 사용자로부터 두 개의 정수를 입력받습니다. 이때 첫 번째 정수를 N에, 두 번째 정수를 M에 할당합니다.
- cnt 변수를 0으로 초기화합니다. 이 변수는 공통으로 등장하는 요소의 개수를 나타냅니다.
- 빈 집합인 temp를 생성합니다.
- N번 반복하면서, 사용자로부터 문자열을 입력받고, 이를 temp 집합에 추가합니다. 이 과정을 통해, N개의 문자열을 입력받아 temp 집합에 저장합니다.
- M번 반복하면서, 사용자로부터 문자열을 입력받고, 이 문자열이 temp 집합에 포함되어 있는지 확인합니다. 만약 포함되어 있다면 cnt 변수를 1 증가시킵니다.
- cnt 변수의 값을 출력합니다. 이 값은 M번 입력된 문자열 중 temp 집합에 속한 문자열의 개수를 나타냅니다.
이 알고리즘은 두 번의 반복문을 사용하여 각각 N과 M번의 입력을 처리하고, 집합을 활용하여 중복된 입력을 효율적으로 관리합니다. 최종적으로 공통으로 등장하는 요소의 개수를 출력합니다.
정답 코드
N, M = map(int, input().split(' '))
cnt = 0
temp = set()
for i in range(N):
temp.add(input())
for j in range(M):
if input() in temp:
cnt += 1
print(cnt)