본문 바로가기

알고리즘-연습문제

Sock Merchant

존은 옷가게에서 일합니다. 그는 판매를 위해 색상별로 쌍을 이루어야하는 양말 더미가 많이 있습니다. 각 양말의 색상을 나타내는 정수 배열이 주어지면 색상이 일치하는 양말 쌍 수를 결정하십시오.

예를 들어, 색상 이있는 양말이 있습니다. 한 쌍의 색 과 한 가지 색이 있습니다. 각 색상 중 하나에 3 개의 홀수 양말이 남아 있습니다. 쌍의 개수는입니다 . 

 

아래 편집기에서 sockMerchant 기능을 완료하십시오 . 사용 가능한 양말 쌍과 일치하는 개수를 나타내는 정수를 반환해야합니다.

sockMerchant에는 다음과 같은 매개 변수가 있습니다.

  • n : 말뚝의 양말 수
  • ar : 각 양말의 색상

입력 형식

첫 번째 줄에는 양말의 수인 정수가 들어 있습니다 . 두 번째 줄에는 더미의 양말 색상 을 나타내는 공백으로 구분 된 정수 가 포함 됩니다 .

 

출력 형식

John이 판매 할 수있는 일치하는 양말 쌍 의 총 개수를 반환하십시오 .

 

샘플 입력

9

10 20 20 10 10 30 50 10 20

샘플 출력

3

 

 

 

// Complete the sockMerchant function below.
func sockMerchant(n int32, ar []int32) int32 {
    nMap := make(map[int32]int32)
    for _, color := range ar {
        if _, exists := nMap[color]; !exists {
            nMap[color] = 1
            continue
        }
        nMap[color]++
    }

    var cnt int32
    for _, val := range nMap {
        cnt += val / 2
    }
    return cnt
}