analogcoding

algorithm 연습9 본문

Study JS for me/Algorithm

algorithm 연습9

be well 2019. 5. 5. 18:54

문제. input 으로 주어진 문자열의 각 단어들을 키로 , 단어의 사용 횟수를 값으로 가친 객체로 리턴하고

        빈 문자열이 오면 빈 객체를 리턴.

 

Ex)  input : 'ask a bunch get a bunch'  => output : {ask: 1, a: 2, bunch: 2, get: 1}

 

 

해결방안.

 

1-1. input 문자열을 분리해서 빈 객체의 key 값으로 정함.

1-2. key 의 값은 1.
1-3. 이미 key 가 존재 할 경우 값 ++

 

2-1. reduce 메소드의 초기값으로 빈 객체를 줌.

2-2. 객체=acc 안에 curr이 있다면 값++
2-3. 없다면 값을 1 로 지정. 

 

 

첫 번째 솔루션.

 

빈 객체를 생성. 빈 문자열이 들어오면 빈 객체를 리턴하고 문자열을 공백 기준으로 나눔.

unction countWords(input) {
  let result = {};
    if(input.length===0){
      return {};
    }
  let arr = input.split(' ');

각 요소를 키로 지정한 채 조건문 생성 , 없다면 값을 1 로 주고 , 이미 존재한다면 1 씩 추가로 더 해줌.

for(let i = 0; i < arr.length; i++){
      if(result[arr[i]]===undefined){
        result[arr[i]] = 1 ;
      }
      else if(result[arr[i]]){
        result[arr[i]] +=1
      }
    }
    return result;
}

 

결과확인

 

 

 

두 번째 솔루션.

 

reduce 메소드의 초기값으로 빈 객체를 주고 객체(acc) 안에 curr이 키 값으로 있다면 값++ , 없다면 값을 1 로 지정. 

 

function countWords(input) {
  // your code here
  if(input === ''){
    return {};
  }
  
  let wordsArr = input.split(' ');
  console.log(wordsArr);
  
  return wordsArr.reduce(function(acc, curr){
    if(curr in acc){
       acc[curr]++;
    }  
    else {
       acc[curr] = 1;
    }
    return acc;
  }, {});
  
}

 

 

결과확인

 

'Study JS for me > Algorithm' 카테고리의 다른 글

recursion 예제연습4  (0) 2019.05.07
algorithm 연습10  (0) 2019.05.06
algorithm 연습8  (0) 2019.05.04
recursion 예제연습3  (0) 2019.05.04
recursion 예제연습2  (0) 2019.05.02
Comments