TIL

dev-wholยท2021๋…„ 5์›” 18์ผ
0

โœ๐Ÿป ๊ฐ์ฒด ๋ณต์Šต

1.

๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋ฌธ์ž(letter)๋ฅผ ํ‚ค๋กœ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜์‹œ์˜ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

let output = ๊ฐ ๋ฌธ์ž์™€ ๋ฌธ์ž์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด('hello');
console.log(output) // --> {h: 1, e: 1, l: 2, o: 1};

์กฐ๊ฑด

  • ๊ฐ ํ‚ค์˜ ๊ฐ’์€ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด์—์„œ ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” number ํƒ€์ž…์˜ ๊ฐ’
  • ๋นˆ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ, ๋นˆ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด

function ๊ฐ ๋ฌธ์ž์™€ ๋ฌธ์ž์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด(str) {
  //๊ฐ์ฒด๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜ ์ง€์ •
  let obj = {};
  //str์˜ ๊ธธ์ด๊นŒ์ง€ ์ˆœํšŒ
  for(let i = 0; i < str.length; i++){
    //๋งŒ์•ฝ ๊ฐ ๊ฐ์ฒด ์•ˆ์— ๋‚ด์šฉ์ด ์—†์„ ๊ฒฝ์šฐ
    if(obj[str[i]] === undefined){
      //ํ‚ค๋Š” str[i]๊ฐ€ ๋˜๊ณ  ๊ฐ’์€ 1๋กœ ์ง€์ •
      obj[str[i]] = 1
    }
    //ํ‚ค๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ฐ’์€ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€
    else{
      obj[str[i]]++
    }
  }
  return obj;
}

2.

๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž(letter)๋ฅผ ๋ฆฌํ„ดํ•˜์‹œ์˜ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

let output = mostFrequentCharacter('apples not oranges');
console.log(output); // --> 'p'

์กฐ๊ฑด

  • ๋„์–ด์“ฐ๊ธฐ๋Š” ์ œ์™ธ
  • ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž๊ฐ€ ๋‹ค์ˆ˜์ผ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๋จผ์ € ํ•ด๋‹น ํšŸ์ˆ˜์— ๋„๋‹ฌํ•œ ๋ฌธ์ž๋ฅผ ๋ฆฌํ„ด
  • ๋นˆ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ, ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด

function mostFrequentCharacter(str) {
  // ๋ฌธ์ž์—ด์„ ๊ณต๋ฐฑ์—†์ด ๋ชจ๋‘ ๋ถ™ํžŒ๋‹ค
  let newStr = str.replace(/(\s*)/g, "");
  // ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ
  let obj = {};
  // ๋ฌธ์ž์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์นด์šดํ„ฐ์— ๋‹ด๊ณ  ์ฒดํฌ์ŠคํŠธ๋ง์— ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋‹ด๋Š”๋‹ค
  let count = 0,
      checkStr = '';
  for (let i = 0; i < newStr.length; i++) {
    //๊ฐ์ฒด ์•ˆ์— i๋ฒˆ์งธ์˜ ํ‚ค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ
    if (obj[newStr[i]] === undefined) {
      // i๋ฒˆ์งธ ํ‚ค์— ๊ฐ’์„ 1๋กœ ์ง€์ •
      obj[newStr[i]] = 1
      // i๋ฒˆ์งธ ํ‚ค์— ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ 1์”ฉ ์ฆ๊ฐ€
    }else{
      obj[newStr[i]]++;
    }
    // i๋ฒˆ์งธํ‚ค๊ฐ€ 0์ธ ์นด์šดํŠธ๋ณด๋‹ค ๋†’์€ ๊ฒฝ์šฐ 
    // ์—ฌ๊ธฐ์„œ ๋ถ€ํ„ฐ ๊ฐ ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋น„๊ต
    if (obj[newStr[i]] > count) {
      // ์นด์šดํ„ฐ์— i๋ฒˆ์งธ ํ‚ค์˜ ๊ฐ’์„ ํ• ๋‹น
      count = obj[newStr[i]];
      // ์ฒดํฌ์ŠคํŠธ๋ง์— i๋ฒˆ์งธ์˜ ๋ฌธ์ž์—ด ํ• ๋‹น
      checkStr = newStr[i];
    }
  }
  return checkStr;
}

0๊ฐœ์˜ ๋Œ“๊ธ€