상세 컨텐츠

본문 제목

알고리즘 문제풀이 - numberSearch

Programming Language/JavaScript

by Yongari 2022. 12. 28. 22:20

본문

문제

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


입력

인자 1 : str

  • string 타입의 문자열

출력

  • number 타입을 리턴해야 합니다 (0 이상의 정수)

주의 사항

  • 빈 문자열을 입력받은 경우, 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

힌트

  • 주어진 문자(길이 1의 문자열)이 숫자(digit)인지 판단하는 방법은 여러 가지 입니다.
  • 그 중 하나는 해당 문자가 숫자들의 집합(문자열 또는 배열)에 속하는 지를 판단하는 것입니다.
  • 이와 관련해서 js includes를 검색해 봅니다.

 

function numberSearch(str) {
  //빈 문자열이면 0을 반환
  if (str.length === 0) {
    return 0;
  }
  //공백제거
  str = str.replace(/(\s*)/g, "");

  sum = 0;
  count = 0;
  // 반복문 순회 중 문자열 중에 숫자면 전부 더하기 
  for (let i = 0; i < str.length; i++) {
    if (!!Number(str[i])) {
      sum += Number(str[i]);
    } else {
    //문자열 길이 체크
      count += 1;
    }
  }
  result = sum / count;
  //정수로 바꿔서 반환
  return Number(result.toFixed(0));
}

관련글 더보기