본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Sales by Match

Sales by Match | HackerRank

 

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