티스토리 뷰
728x90
[input -> output]
s라는 문자열이 input으로 들어올 때, 변환되지 않은 문자열을 숫자의 형태로 바꾸어 number 형태로 반환하는 문제이다.
나의 경우 어떻게 문자열을 숫자로 변환할 수 있을까 생각하던 중 replace 함수가 떠올랐다.
하지만 replace 함수는 처음에 발견하는 string에 대해서만 변환을 해주기 때문에, s에 속한 모든 문자열을 변환하려면 정규식을 사용해야했다.
text.replace(/c/g, "변환하려는 문자");
위와 같이 사용하면 문자열에 속한 "c"라는 문자를 모두 변환할 수 있다.
하지만 이 문제의 경우 변수에 담긴 문자열을 찾고 싶은 것이기 때문에 다른 방식이 필요했다.
변수를 활용하여 문자열 대체가 필요할 때에는 아래의 코드와 같이 RegExp 를 통해 정규식을 만들어주면 된다.
대소문자 구분없이 변환하고 싶으면 gi를 넣어주면 된다!
var re = new RegExp(findStr[i], "g"); // 대소문자 구분됨
s = s.replace(re, i.toString())
var re = new RegExp(findStr[i], "gi"); // 대소문자 상관없이 모두 변환
s = s.replace(re, i.toString())
이 문제를 풀기 위해 내가 짠 코드이다.
function solution(s) {
var findStr = ["zero","one","two","three","four","five","six","seven","eight", "nine"];
for(var i=0 ; i<findStr.length ; i++) {
var re = new RegExp(findStr[i], "g");
s = s.replace(re, i.toString())
}
return s*1;
}
문제를 제출하고 난 후 굉장히 효율적인 코드를 발견했다.
정규식은 사용법에 익숙해지기 쉽지 않은데, split과 join함수를 사용하여 간단하게 풀 수 있었다.
앞으로 문제를 풀 때 이러한 방법을 응용하려고 노력해야겠다!
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
728x90
'programmers. Level1' 카테고리의 다른 글
javascript - 3진법 뒤집기 (0) | 2021.11.03 |
---|---|
javascript - 폰켓몬 (0) | 2021.11.03 |
javascript - 모의고사 (0) | 2021.11.01 |
javascript - 소수 만들기 (0) | 2021.10.28 |
javascript - 예산 (0) | 2021.10.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 면접을 위한 CS 전공지식 노트
- 상태관리
- 이것이 취업을 위한 코딩테스트다
- nomadcoder
- redux
- 자바스크립트
- 기초
- springboot
- TypeScript
- level3
- 소프티어
- React
- 파이썬
- 이것이코딩테스트다
- html
- 노마드코더
- Hook
- level1
- 이진탐색
- CS
- dfs
- CORS
- JavaScript
- React.FC
- reactjs
- axios
- css
- programmers
- 프로그래머스
- 이코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함