HackerRank/Algorithms

[HackerRank C] Implementation : Sales by Match

ruming 2021. 7. 28. 03:10

양말의 짝이 몇개가 있는지 세는 문제다.

n개의 숫자가 입력된 배열에서 같은 숫자가 2개씩 얼만큼 짝이 되는지 세면 된다.

 

코드

간편한 방법을 사용하긴 했지만 메모리 소모가 큰 편이다. (양말 종류가 적을 경우)

n의 범위가 1부터 100이었기 때문에 사용가능한 방법이었다.

int sockMerchant(int n, int ar_count, int* ar) {
    int a[101] = {0};
    int i, ck=0;
    for(i=0; i<n; i++){
        a[ar[i]]++;
    }
    for(i=1; i<101; i++){
        if(a[i])    ck += a[i]/2;
    }
    return ck;
}

양말 종류가 숫자로 이루어졌기 때문에 각 종류의 양말이 얼마나 있는지 세기 위해 101 크기의 배열을 하나 받았다. 

인덱스는 1부터 100까지 사용할 것이다. 10이 4개, 20이 3개 있다고 하면 a[10] = 4, a[20] = 3 이런 식으로 개수를 세 줄 것이다. 그리고 개수가 있는 것들을 반으로 나누어 ck에 더한다. 그리고 ck를 반환해주었다.