๐Ÿ’› JavaScript/์ด๋ชจ์ €๋ชจ

[JS] ๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ์บ ํ”„ ์ž๊ฐ€์ง„๋‹จ - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

Jayden1116 2022. 6. 24. 11:21
const solve = (arr) => {
  arr.sort((a, b) => a - b);
  let count = 0;
  let temp = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i + 1]) {
      count++;
    } else {
      temp.push(count + 1);
      count = 0;
    }
  }

  temp = temp.filter((x) => x > 1);
  return temp.length ? temp : [-1];
};

let arr = [1, 2, 3, 3, 3, 3, 4, 4];

console.log(solve(arr));

๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ์บ ํ”„


// ๋ถ€์ŠคํŠธ์บ ํ”„ ๋ ˆํผ๋Ÿฐ์Šค 1
function countOf(arr, value) { //---๊ฐ€
    var count = 0;
    arr.forEach(element => {
        if (element == value) count++;
    });
    return count;
}

function solution(arr) {
    var answer = [];
    var set = new Set([]);
    arr.forEach( element => {
        if (set.has(element)) return;   //---๋‚˜
        set.add(element);
        count = countOf(arr, element);  
        if (count > 1) answer.push(count); //---๋‹ค
    });
    if (answer.length == 0) answer.push(-1); //---๋ผ
    return answer;
}

// ๋ถ€์ŠคํŠธ์บ ํ”„ ๋ ˆํผ๋Ÿฐ์Šค 2
function solution(arr) {
    var answer = [];    
    var map = new Map();
    arr.forEach( element => {
        if (map.has(element)) { //---๊ฐ€
            map.set(element, map.get(element) + 1);
        }
        else { //---๋‚˜
            map.set(element, 1);
        }        
    });
    map.forEach( (value) => {
        if (value > 1) {    //---๋‹ค
            answer.push(value);
        }
    });
    if (answer.length == 0) answer.push(-1); //---๋ผ
    return answer;
}

์Œ... ์‚ฌ์‹ค ๋‚œ ๋‚ด ์ฝ”๋“œ๊ฐ€ ๋” ๊น”๋”ํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ, ๋ ˆํผ๋Ÿฐ์Šค์— ์žˆ๋Š” Set, Map ๋“ฑ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. :)