본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다
코딩테스트/baekjoon

[자료구조] 백준 14425번(파이썬) : 문자열 집합

by parzival56 2023. 5. 31.

#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을 써야 한다고 한다. 

댓글