[알고리즘] characterFrequency

프최's log·2020년 11월 6일
0

study

목록 보기
43/59

문제

문자열을 받아서 그 문자열 안의 문자들을 똑같은 문자가 나오는 빈도수에 따라
"문자", "빈도수" 형식의 원소로 만들고, 그 원소들을 빈도수가 많은 순서대로 정렬한 배열을 리턴하세요.

풀이

A.빈도 수에 따른 객체 생성
B.해당 객체를 배열로 전환
C.정렬
C-1. 숫자 정렬
c-2. 숫자가 중복되면 알파벳 순 정렬

const characterFrequency = function (string) {
 
  let newStr = string.split('');
  let newObj = {};

  newStr.forEach(ele => {
    (ele in newObj) ? newObj[ele]++ : newObj[ele] = 1;
  })
 
  return result = Object.entries(newObj).sort((a,b) => 
  { if ( a[1] !== b[1]){
     return b[1]-a[1]
  } else {
    if ( a[0] < b[0] ) return -1; 
    else if ( a[0] == b[0] ) return 0; 
    else return 1; 
  }
  });
};

const characterFrequency = function (string) {
 
  let newStr = string.split('');
  let newObj = {};

  newStr.forEach(ele => {
    (ele in newObj) ? newObj[ele]++ : newObj[ele] = 1;
  })
  
 //삼항연산자
  return result = Object.entries(newObj).sort((a,b) => 
   ( a[1] !== b[1]) ? 
     b[1]-a[1]
     : ( a[0] < b[0] ) ? -1 
       : ( a[0] == b[0] ) ? 0 : 1
  );
};

Object.keys, values, entries

profile
차곡차곡 쌓아가는 나의 개발 기록

0개의 댓글