[코테] 숫자 문자열과 영단어

404·2022년 6월 8일
0

코테&알고리즘

목록 보기
1/4
post-thumbnail

https://github.com/FUNco247/Co_Test_Solution/blob/master/stringToNum.js

"one23onetwo3" 처럼 숫자와 숫자영단어로 조합된 input을 123123 과 같은 숫자로 변환하여 return하는 문제다.

function solution(s) {
  const eng = [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
    "zero",
  ];
  const num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  for (let i = 0; i < eng.length; i++) {
    const regex = new RegExp(eng[i], "gi");
    s = s.replace(regex, `${num[i]}`);
  }
  return Number(s);
}

배운점

  1. String.replace( "before", "after" ) 메소드에서 "before" 에 정규식 표현을 사용하여 일치하는 것을 "after"로 변환할 수 있음.

  2. String.replace(/one/g, 1) 처럼 g 와 함께 사용하면 문자열에서 모든 one을 1로 바꾼다. (g없이 사용하면 한 건만 바꿈) // i와 함께 사용하면 대소문자 구분 안함.

  3. String.replace(/one/g, 1) 메소드의 one 자리에 처음에는 '${num[i]}'와 같은변수를 바로 담고싶었지만 불가능했음. => 정규식 표현 안에 변수를 담는법을 참고함.

    http://daplus.net/javascript-javascript-regex-%EC%A0%95%EA%B7%9C%EC%8B%9D-%EC%95%88%EC%97%90-%EB%B3%80%EC%88%98%EB%A5%BC-%EB%84%A3%EB%8A%94-%EB%B0%A9%EB%B2%95/

느낀점

코딩테스트 초보레벨 단계에서 정규식표현에 대한 사용이 정말 빈출된다. 그만큼 기초지식이라고 생각하고 꾸준히 공부해봐야겠다. 그리고 new 에 대해서도.

타인의 멋진 풀이

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);
}
profile
T.T

0개의 댓글