숫자 문자열과 영단어 - javascript

DonQ·2022년 3월 25일
0

CodingTest

목록 보기
7/33
post-thumbnail

문제 (출처)

👉https://programmers.co.kr/learn/courses/30/lessons/81301

나의 접근

  • 우선 문제를 보고 영어의 규칙이 있을까 고민하였다...

  • for of는 string도 반복하고 개별값을 보여줄 수 있다 하여 그걸로 뭘 할 수 있을까 고민하였다...

  • 어제 풀었던 문제에서 사용한 replace를 사용하면 되지 않을까해서 사용해보았다.
    그런데 제출 후 채점하기에서 계속 실패가 나와서 이유를 찾아보니, replace는 string에서 제일 먼저 발견된것만 바꿀수 있다고 해서 replaceall 또는 정규표현식을 써야 모두 바꿀수 있다고 하였다.

풀이

function solution(s) {
    let answer = 0;
    
    s = s.replace(/zero/g, 0);
    s = s.replace(/one/g, 1);
    s = s.replace(/two/g, 2);
    s = s.replace(/three/g, 3);
    s = s.replace(/four/g, 4);
    s = s.replace(/five/g, 5);
    s = s.replace(/six/g, 6);
    s = s.replace(/seven/g, 7);
    s = s.replace(/eight/g, 8);
    s = s.replace(/nine/g, 9);
    
    answer = Number(s);
    return answer;
}

오늘의 배운점 및 교훈

  • 나름 잘 풀었다 생각하고 뿌듯했는데 다른사람의 풀이에서 더 좋은 풀이를 발견하여 공유한다.
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);
}
  • 너무 깔끔하고 기발해서 머리 탁 쳤다...

  • split을 쓰면 해당을 기준으로 나누고, join으로 해당 숫자를 넣는다. 두 메소드 사용법을 잘 봐두어야겠다.

  • 정규표현식 /~~~/g를 쓰면 모두 찾는다는것을 다시 한번 머리에 집어 넣어야겠다.

  • 다시 한번 저 코드의 감탄하며 ...
    감탄

profile
꾸준히 쌓아가는 코딩 Study

0개의 댓글

관련 채용 정보