includes를 활용한 문제 풀이 Javascript

cptkuk91·2022년 8월 10일
1

Algorithm

목록 보기
54/161

문제

문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.

주의사항

빈 문자열을 입력받은 경우, 0을 리턴해야 합니다.
숫자(digit)는 연속해서 등장하지 않습니다.

입출력 예시

let output = numberSearch('Hello6 ');
console.log(output); // --> 1

output = numberSearch('Hello6 9World 2,');
console.log(output); // --> 2

output = numberSearch('Hello6 9World 2, Nic8e D7ay!');
console.log(output); // --> 2

풀이

function solution(str){
    let sum = 0;
    let newStr = "";
    
    const digits = "0123456789";
    
    if(str === ""){
      return 0;
    }
    
    for(let i = 0; i < str.length; i++){
    	if(digits.includes(str[i])){
        	// 반드시 Number를 붙여줘야 합니다. Number가 없는 경우 아스키코드로 인식함
        	sum += Number(str[i]);
        } else if(str[i] !== " "){
        	newStr += str[i];
        }
    }
    return Math.round(sum / newStr.length);
}

digits을 선언 후 0~9까지의 숫자를 담아줍니다. 이후 includes를 활용해 해당 숫자를 포함하고 있는 경우 선언된 sum에다가 Number(str[i])를 담아줍니다.

공백을 제외한 나머지 문자열을 구하는 값이기 때문에 (str[i] !== " ")를 통해 newStr에 문자를 넣어줍니다.

문제에서 요청하는 값은 문자열에서 숫자를 모두 찾아 더한 후 해당 값을 문자열의 길이로 나눈 값을 정수로 반올림하랍니다.

따라서 Math.round를 통해 반올림하고 Sum / newStr.length로 원하는 결과값을 찾을 수 있었습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글