#include <stdio.h>
#include <string.h>
int main() {
int origin, compare;
scanf("%d %d", &origin, &compare);
// 입력한 개수에 맞게 메모리 할당
char originalWords[origin][100];
char compareWords[compare][100];
// 원본 단어 입력
for (int i = 0; i < origin; i++) {
scanf("%s", originalWords[i]);
}
// 비교 단어 입력
for (int i = 0; i < compare; i++) {
scanf("%s", compareWords[i]);
}
// 완전히 같은 단어 개수 계산
int same = 0;
for (int i = 0; i < origin; i++) {
for (int j = 0; j < compare; j++) {
if (strcmp(originalWords[i], compareWords[j]) == 0) {
same++;
break;
}
}
}
printf("%d\n", same);
return 0;
}
원래 이 문제를 c언어로 짜려고 했을 때 가장 먼저 생각난 방식은 위처럼 모두 2차원 배열로 만들어 인덱스 별로 strcmp를 통해 비교하는 것이었다. 그러나 런타임 에러가 났다...
그래서 그냥 파이썬으로 풀었다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
arr = set()
for i in range(N):
arr.add(input())
ans = 0
for _ in range(M):
t = input()
if t in arr:
ans+=1
print(ans)
문제를 풀고 알아보니 C로 푸는 데는 hashing을 써야 한다고 한다.
'코딩테스트 > baekjoon' 카테고리의 다른 글
[스택] 백준 2493번 (C언어) : 탑 (0) | 2023.05.19 |
---|---|
[스택] 백준 2504번 (파이썬) : 괄호의 값 (1) | 2023.05.19 |
[스택] 백준 10799번 (C언어) : 쇠 막대기 (0) | 2023.05.18 |
[스택 & 큐] 백준 1935번 (C언어) - 후위 표기식2 (0) | 2023.05.09 |
[스택 & 큐] 백준 2164번 (C언어) - 카드2 (0) | 2023.05.09 |
댓글