C언어

[프로그래머스-C언어] 배열의 유사도

랏소베어123 2024. 5. 27. 19:56

문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ s1, s2의 길이 ≤ 100
1 ≤ s1, s2의 원소의 길이 ≤ 10
s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
s1과 s2는 각각 중복된 원소를 갖지 않습니다.

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// s1_len은 배열 s1의 길이입니다.
// s2_len은 배열 s2의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* s1[], size_t s1_len, const char* s2[], size_t s2_len) {
    int answer = 0;
    for(int i=0; i<s1_len ; i++)
    {
        for(int j=0; j<s2_len;j++)
        {
            if(strcmp(s1[i],s2[j])==0)
            {
                answer++;
            }
        }
    }
    return answer;
}

 

처음에 짰던 if 문은

if(s1[i]==s2[j])
            {
                answer++;
            }

이였는데 자꾸 에러가 났다.

찾아보니 이렇게 if을 짜면 문자열을 비교하는 것이 아닌 

s1[i]가 저장된 주소값과 s2[j]가 저장된 주소값을 비교하기 때문에

문자열 비교함수인 strcmp를 써야한다