[문자열 탐색][JS] 숫자만 추출

Teasan·2022년 6월 29일
0

Algorythm

목록 보기
6/17
post-thumbnail

숫자만 추출


문제 설명

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205 이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

입력 설명

첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.

출력 설명

첫 줄에 자연수를 출력합니다.

입출력 예제

▣ 입력예제 1

  • g0en2T0s8eSoft

▣ 출력예제 1

  • 208

해답/풀이(내가 푼 문제)

function solution(s) {
  let answer = 0;
  let str = s.replace(/[^0-9]/g, "");
  let num = parseInt(str);
  answer = num;
  return answer;
}

let str = "g0en2T0s8eSoft";
console.log(solution(str));

출력

  • 208

수도 코드

function solution(s) {
  // 0. 반환해야 하는 answer의 초기값을 0으로 할당한다.
  let answer = 0;
  // 1. 인자로 받은 문자열에서 정규식을 사용하여 숫자만 추출한다.
  let str = s.replace(/[^0-9]/g, "");
  console.log(s.replace(/[^0-9]/g, "")); // 0208

  // 2. 추출한 숫자를 자연수로 변환한다.
  let num = parseInt(str);
  console.log(parseInt(str)); // 208

  // 3. num을 answer에 할당한다.
  answer = num;
  // 4. answer를 반환한다.
  return answer;
}

let str = "g0en2T0s8eSoft";
console.log(solution(str));

해답/풀이(강의)

function solution(s) {
  let answer = "";
  for (let x of s) {
    if (!isNaN(x)) {
      answer += x; // 0208
    }
  }

  return Number.parseInt(answer); // 208
}

let str = "g0en2T0s8eSoft";
console.log(solution(str));

출력

  • 208

해답/풀이(강의)

parseInt()를 사용하지 않았을 때

function solution(s) {
  let answer = 0;
  for (let x of s) {
    if (!isNaN(x)) {
      answer += x; // 0208
    }
  }

  return Number(answer); // 208
}

let str = "g0en2T0s8eSoft";
console.log(solution(str));

출력

  • 208

⚡️ Resource


parseInt

  • parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.

MDN 공식 문서 : parseInt()

Example

function roughScale(x, base) {
  const parsed = parseInt(x, base);
  if (isNaN(parsed)) {
    return 0;
  }
  return parsed * 100;
}

console.log(roughScale(" 0xF", 16));
// expected output: 1500

console.log(roughScale("321", 2));
// expected output: 0

isNaN()

  • isNaN() 함수는 어떤 값이 NaN인지 판별합니다. isNaN 함수는 몇몇 혼란스러운 케이스을 가지고 있으므로, ECMAScript 2015에서 추가한 Number.isNaN()으로 바꾸는 편이 좋을 수도 있습니다.

MDN 공식 문서 : isNaN()

Example

function milliseconds(x) {
  if (isNaN(x)) {
    return "Not a Number!";
  }
  return x * 1000;
}

console.log(milliseconds("100F"));
// expected output: "Not a Number!"

console.log(milliseconds("0.0314E+2"));
// expected output: 3140

⚡️ Reference


✍🏻 자바스크립트 알고리즘 문제풀이 - 인프런

profile
일단 공부가 '적성'에 맞는 개발자. 근성있습니다.

0개의 댓글