analogcoding

algorithm 연습10 본문

Study JS for me/Algorithm

algorithm 연습10

be well 2019. 5. 6. 17:59

문제. input 으로 숫자와 문장이 섞인 문자열이 들어오면 섞인 숫자의 합을 글자수로 나눈 값을 리턴.

        소수일 경우 반올림/내림해서 리턴.

 

Ex)  input : "Hello6 9World 2, Nic8e D7ay!"  => output : ((6 + 9 + 2 + 8 + 7 = 32) / 17 letters) = 2

 

 

해결방안.

 

1. input 을 배열로 나누고 각 요소가 숫자인지 알파벳인지 판단.
2. 판단을 위한 알파벳으로 이루어진 소문자 배열을 생성.

3. input 을 소문자로 통일.

4. 각 인덱스에서 숫자 타입이 있다면 변수에 모두 더 함.

5. 문자의 경우 빈 배열에 넣어주고 그 length 를 파악.

 

 

input 을 소문자로 바꾼 뒤 배열로 변환 ,  알파벳 문자열 배열 생성 , 문자열을 담을 빈 배열 생성 , 숫자 파악을 위한 변수 생성 .

var numberSearch = function(str) {
  str = str.toLowerCase().split("")
  var apb = "abcdefghijklmnopqrstuvwxyz"
  apb = apb.split('')
  var strs = [];  
  var numre = 0;

반복문으로 각 요소를 Number() 함수에 넣었을 때 숫자로 존재하면 그 요소들을 모두 변수에 더 해서 숫자 값 산출.

for(let i = 0; i < str.length; i++){
    if(Number(str[i])){
      numre += Number(str[i]);
    }

반복문으로 각 요소가 알파벳 배열의 요소와 일치하면 빈 배열에 넣은 후 length 값 산출.

for(let j = 0; j < apb.length; j++){
      if(apb[j]===str[i]){
        strs.push(str[i]) 
      }
   }
  }

반올림/반내림 후 값을 리턴.

return Math.round(numre / strs.length)
}

 

 

결과확인

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

recursion 예제연습 5  (0) 2019.05.10
recursion 예제연습4  (0) 2019.05.07
algorithm 연습9  (0) 2019.05.05
algorithm 연습8  (0) 2019.05.04
recursion 예제연습3  (0) 2019.05.04
Comments