양말의 짝이 몇개가 있는지 세는 문제다.
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를 반환해주었다.
'HackerRank > Algorithms' 카테고리의 다른 글
[HackerRank C] Implementation : Angry Professor (0) | 2021.08.01 |
---|---|
[HackerRank C] Warmup : Simple Array Sum (0) | 2021.07.28 |
[HackerRank C] Warmup : Plus Minus (0) | 2021.07.28 |
[HackerRank C] Warmup : Birthday Cake Candles (0) | 2021.07.28 |
[HackerRank C] Implementation : Subarray Division (0) | 2021.07.18 |