201207 _ 알고리즘 (객체 / arr.filter 등)

jungeundelilahLEE·2020년 12월 6일
0

Daily Algorithm

목록 보기
5/19

[객체21]

문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.


str : string 타입의 공백이 있는 문장
string 타입을 리턴해야 합니다.

띄어쓰기는 제외합니다.
가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.



// str 문자열에서 가장 많이반복되는 문자를 리턴 // 빈 문자열을인자로 받으면 ""리턴
// 가장많이반복되는 문자가 2개이상일때, 앞의 문자 리턴

// array.from 으로 str을 하나씩 쪼개서 배열에 담는다
// 배열을 순회하면서 일단 " "띄어쓰기를 제외시킨다 // 제외시킨 배열을 새로리턴
// 첫번째 요소를 기준으로 잡고 for of 문을 사용해서 겹치는 문자 파악하기 (?애매)

function mostFrequentCharacter(str) {
  // 빈문자열일 경우
  if (str === "") {	
    return ""
  }
  
  // 빈문자열이 아닐 경우
  let fromArr = Array.from(" "); //["w", "i", "l", "l", "y"]
  // let first = ""
  // for (let element in fromArr) {
  //   for (let i = 0; i < fromArr.length; i++) {
  //     if (fromArr[i] === element) {
  //       first = first + element
  //     }
  //   } 
    
  // } 
  // return first 

  // for (let element in fromArr) {
  //   let Max = "";
  //   for (let i = 0; i < fromArr.length; i++) {
  //     if (fromArr[i] === element) {
  //       return element;
  //     }
  //   }
  // }

   let obj = { mostCount: 0, mostFrequent: '' };
  for (let i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
      continue;
    }

    if (obj[str[i]] === undefined) {
      obj[str[i]] = 0;
    }
    obj[str[i]] += 1;

    if (obj[str[i]] > obj['mostCount']) {
      obj['mostCount'] = obj[str[i]];
      obj['mostFrequent'] = str[i];
    }
  }
  return obj['mostFrequent'];

}

// string.replce(/(\s*)/g, "")






[고차함수10]

배열과 임의의 값(discarder)을 입력받아 기존 배열에서 discarder와 일치하는 요소가 제거된 새로운 배열을 리턴해야 합니다.


인자 1 : arr - 임의의 요소를 갖는 배열
인자 2 : discarder - 원시 자료형(primitive data types)

discarder와 일치하는 요소가 제거된 새로운 배열을 리턴해야 합니다.

반복문(for, while) 사용은 금지됩니다.
arr.indexOf, arr.splice, arr.slice, arr.forEach 등의 사용은 금지됩니다.
반드시 arr.filter를 이용해서 풀어야 합니다.
입력받은 배열을 수정하지 않아야 합니다.
빈 배열을 입력받은 경우, 빈 배열을 리턴해야 합니다.


// array.filter - 주어진 함수의 테스트를 통과하는 요소만 모아 새로운 배열로 반환
// const result = words.filter(word => word.length > 6);


function removeElement(arr, discarder) {

  function foo (el) {
    console.log(`el:${el}`) // 1,2,3,2,1,2가 차례로 들어감
    return el !== discarder
  }

  return arr.filter(foo);
}

removeElement([1,2,3,2,1,2],2)

////////////////////////////////////////////////

function removeElement(arr, discarder) {

  return arr.filter(function (el) {
    if (el !== discarder) {
      return true;
    }
    return false;
  });
}
profile
delilah's journey

0개의 댓글