❓숫자만 추출하기
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205 이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
▣ 입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.
▣ 출력설명
첫 줄에 자연수를 출력합니다.
▣ 입력예제 1g0en2T0s8eSoft
▣ 출력예제 1208
💡 문제풀이
1. 정규식으로 대체하기
function solution(str) {
let answer = "";
answer = str.toLowerCase().replace(/[a-z]/g, '')
return parseInt(answer);
}
let str = "g0en2T0s8eSoft";
console.log(solution(str));
1) 받은 문자열을 모두 소문자화 시키고 소문자에 해당되는 문자들을 빈칸으로 바꾼다.
2) parseInt() 함수는 문자열 인자를 구문분석하여 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 반환합니다.
parseInt를 사용하여 정수로 반환한다.
2. isNaN()을 사용하여 출력하기
function solution(str) {
let answer = "";
for (let x of str) {
if (!isNaN(x)) answer += x;
}
return parseInt(answer);
}
let str = "g0en2T0s8eSoft";
console.log(solution(str));
1) answer를 string형식으로 초기화 시켜줍니다.
2) 받은 문자열을 for of 문으로 실행시키는데, 이때 if문 안에 isNaN 메소드를 사용해줍니다.
isNaN() 함수는 어떤 값이 NaN(Not a Number)인지 판별합니다. 그러므로 부정(!)을 하여 true라면 answer 변수에 담아줍니다.
3) parseInt()를 사용하여 정수로 변환하여 반환합니다.
3. parseInt 미사용시
function solution(str) {
let answer = 0;
for (let x of str) {
if (!isNaN(x)) answer = answer * 10 + Number(x);
}
return answer;
}
let str = "g0en2T0s8eSoft";
console.log(solution(str));
1) answer를 Number형식으로 초기화 시켜줍니다.
2) for of문을 사용하는데 위와 같이 isNaN() 메소드를 사용합니다. 값이 true라면 answer = answer * 10 + Number(x)를 실행합니다. answer = answer * 10 + Number(x) 를 사용한 이유를 설명드립니다.
위의 실행문이 실행이 되면 !isNaN이 true가 되어 반환하는 숫자들은 0208입니다. 이것을 실행시킨다면
(1) answer = 0 * 10 + 0 이 처음 실행되고 (2) answer = 0 * 10 + 2 가 됩니다. 이렇게 첫번째 자리에 0이 들어가면 0을 없애줍니다.
(3) answer = 2 * 10 + 0 이 될 때에는 앞에 들어간 숫자를 10의 자리로 올려서 해당 숫자가 1의 자리로 들어올 수 있게 만들어줍니다.
(4) answer = 20 * 10 + 8 이 되어 앞의 20이 200이 되게끔 만들어주고 1의 자리에 8이 들어오게끔 해줍니다.
==> 처음에 0이 들어오면 숫자를 없애주고 0이 아닌 숫자가 처음 시작되고나서 숫자가 들어오면 10의자리 100의자리... 로 올라가게끔 해주는 역할을 합니다.
그 후 answer를 반환합니다.
'Front-End > Algorithm' 카테고리의 다른 글
[알고리즘] 문자열 압축 (0) | 2021.05.22 |
---|---|
[알고리즘] 가장 짧은 문자거리 구하기 (0) | 2021.05.22 |
[알고리즘] 유효한 팰린드롬 (0) | 2021.05.20 |
[알고리즘] 회문 문자열 (0) | 2021.05.18 |
[알고리즘] flag변수를 이용한 봉우리 개수 구하기 (0) | 2021.05.18 |
댓글