본문 바로가기

Fundamentals/Algorithms

[해커랭크] Sales by Match

문제링크

 

Sales by Match | HackerRank

How many pairs of socks can Alex sell?

www.hackerrank.com

대량의 양말이 있으며, 이 양말들을 색상별로 짝을 지어야 합니다. 각 양말의 색상을 나타내는 정수 배열이 주어졌을 때, 같은 색상의 양말 쌍이 몇 쌍인지 결정해야 합니다. 예를 들어, 양말의 색상을 나타내는 배열이 주어집니다. 이 배열에서 같은 색상의 양말이 몇 쌍인지를 찾아야 합니다.

 

문제풀이 :

 

function sockMerchant(n, ar) {
    let pairs = 0
    const colors = {}
    for(let i=0; i<n; i++){
        colors[ar[i]] = (colors[ar[i]] || 0) + 1
        if(colors[ar[i]] === 2){
            pairs ++;
            colors[ar[i]] = 0
        }
    }
    return pairs
}

 

객체를 사용하여 요소의 빈도수를 체크하고 합이 2가 되면 result 값을 올려주고 해당 데이터의 빈도수는 0으로 초기화합니다. 

 

다른 풀이 :

 

function sockMerchant(n, ar) {
    let pairs = 0;
    const colors = {};

    for (let i = 0; i < n; i++) {
        const color = ar[i];
        if (colors[color]) {
            pairs++;
            colors[color] = 0;
        } else {
            colors[color] = 1;
        }
    }

    return pairs;
}

위 함수는 양말의 색상을 만날 때마다 해당 색상이 이미 존재하는지 확인하고, 존재한다면 쌍을 하나 늘리고 해당 색상의 카운트를 0으로 초기화합니다.

'Fundamentals > Algorithms' 카테고리의 다른 글

[해커랭크] Electronics Shop  (0) 2023.12.06
[해커랭크] Counting Valleys  (0) 2023.12.06
[해커랭크] Bill Division  (0) 2023.12.05
[해커랭크] Day of the Programmer  (0) 2023.12.05
[해커랭크] Migratory Birds  (0) 2023.12.04