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)
}
결과확인