article thumbnail image
Published 2022. 6. 10. 13:33
숫자만 추출
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만
듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205
이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
▣ 입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.
▣ 출력설명
첫 줄에 자연수를 출력합니다.
▣ 입력예제 1
g0en2T0s8eSoft
▣ 출력예제 1
208
 
 
문제를 이해해보면 어떤 숫자와 문자가 섞여있는 문자열이 주어지면 
그안에서 숫자만 출력해주면 되는것이다. (단, 자연수만)

[정규표현식]

1. 정규표현식 사용함
2. 0208이 출력됨-> 0은 제외하고 자연수로 만들어야하니까 parseInt를 사용하여 정수로 만들어줌

[for문사용]

1. for문 사용
2. 조건문에 isNaN을 부정문으로 만들어주고
isNaN() - 매개변수가 숫자인지 검사하는 함수사용
숫자면 false
숫자가아니면 true 반환
 

📌작성코드 (정규표현식 사용)

<html>

<head>
  <meta charset="UTF-8">
  <title>출력결과</title>
</head>

<body>
  <script>
    function solution(str) {
      let answer;
      answer = str.replace(/[^0-9]/gi, '')
      //0부터 9까지의 모든 숫자를 찾아줘, 앞에 ^는 첫글자부터 매칭시켜야하기때문에 붙어야함
      return parseInt(answer);
    }
    let str = "g0en2T0s8eSoft";
    console.log(solution(str));
  </script>
</body>

</html>
 
정규표현식 사용 참고👇

https://github.com/seo0yoon/regexp-test

(for문 if문 사용)

<html>

<head>
  <meta charset="UTF-8">
  <title>출력결과</title>
</head>

<body>
  <script>
    function solution(str) {
      let answer = '';
      for (let i = 0; i < str.length; i++) {
        if (!isNaN(str[i])) {
          answer = answer + str[i]
        }
      }
      return parseInt(answer);
    }
    let str = "g0en2T0s8eSoft";
    console.log(solution(str));
  </script>
</body>

</html>

자바스크립트 내장함수인 isNaN를 사용해서 숫자만 추출해준다.

👇

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/isNaN

 

isNaN() - JavaScript | MDN

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

developer.mozilla.org

str[i]의 인텍스가 숫자이면 false 아니면 true를 반환하고,

false로 만들어주기위해 !낫연산자로 만들어주었다.

결과값에 저장해주면 정상출력됨.

 

매개변수가 숫자가 아니면 true, 숫자이면 false를 반환한다.

'알고리즘' 카테고리의 다른 글

[알고리즘 문제] 3-5번  (0) 2022.06.10
[알고리즘 문제] 3-4번  (0) 2022.06.10
[알고리즘 문제] 3-2번  (0) 2022.06.08
[알고리즘 문제] 3-1번  (0) 2022.06.08
[알고리즘 문제] 2-6번  (0) 2022.06.07
복사했습니다!