Sales by Match | HackerRank
How many pairs of socks can Alex sell?
www.hackerrank.com
<문제>

input: 첫번째 줄에는 총 양말의 개수가 입력되고, 두번째 줄에는 각 양말의 색깔을 모두 입력받는다.
output: 같은 색의 양말끼리 짝맞추고 짝이 있는 양말의 개수를 출력한다.
<코드>
int sockMerchant(int n, int ar_count, int* ar) {
int i=0, count=0, total=0;
for(i=0; i<n-1; i++)
{
count=0;
for(int j=i+1; j<n ;j++)
{
if(ar[i]==ar[j] && ar[i]!=0)
{
if(count<1)
{
count++;
ar[j]=0;
}
}
}
total=total+count;
}
return total;
}
<풀이>
이 문제는 중첩된 for문을 이용해 문제를 풀었다.
먼저 외부 루프는 i=0부터 양말 개수인 크기 n번만큼 반복하고, 내부 루프는 j=i+1부터 j<n까지 반복하였다.
만약 ar[i]값과 ar[j]값이 같으면 i번째와 j번째의 양말 색이 같은 것이므로 count를 1만큼 증가시키고 ar[j]=0으로 값을 바꾼다. 내부 루프를 빠져나와 total 변수에 count값을 더한 뒤 i값을 1 증가시켜서 count값을 0으로 초기화시킨다.
마지막으로 짝지어진 양말 개수인 total을 리턴하여 문제를 풀 수 있었다.
<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Utopian Tree (0) | 2021.07.27 |
|---|---|
| [HackerRank] Print in Reverse (0) | 2021.07.27 |
| [HackerRank] Strong Password (0) | 2021.07.22 |
| [HackerRank] Reverse a linked list (0) | 2021.07.22 |
| [HackerRank] Delete a Node (0) | 2021.07.18 |