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