프로그래머스 알고리즘 문제풀이 lvl.1 -string에서 다수의 단어 replace 하기

Jung Hyun Kim·2021년 7월 12일
0
post-thumbnail

1주 1알고리즘 문제 풀기👆

알고리즘을 github으로 풀다보니 블로그 정리가 안된것 같아 생각나면 하나씩 올려야 겠다!
1주 1알고리즘은 여전히 진행중이며 아래 스터디 레포에서 확인할 수 있다 🤗
스터디 레포

문제

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

나의 풀이

  1. replace 정규식을 사용했는데 여러 단어를 전환하게끔 사용하려면 아래와 같이 사용하여 replaceAll과 같은 결과를 낼 수 있다.
/**
 *
 * @param {*} 숫자문자열과 영단어
 */ //programmers.co.kr/learn/courses/30/lessons/81301
function solution(s) {
  
  // 먼저 맵핑해줄 단어를 string:num으로 변수에 담아준다
  const mappedNumber = {
    zero: 0,
    one: 1,
    two: 2,
    three: 3,
    four: 4,
    five: 5,
    six: 6,
    seven: 7,
    eight: 8,
    nine: 9,
  };

  let answer = "";
  
  // '/gi'를 replace의 첫 인자로 넣어 전체에서 아래 단어를 replace할수 있도록 | 로 묶고, 두번째 인자로는 mappedNumber를 찾는 함수를 넣어주어 각 단어의 숫자형태로 replace 할수 있게 한다. 
  answer = s.replace(
    /zero|one|two|three|four|five|six|seven|eight|nine/gi,
    function (matched) {
      return mappedNumber[matched];
    }
  );
  
 // answer는 number type이어야 하므로 마지막에 변환해준다.  
  return answer * 1;
}

참고한 stackoverflow

profile
코린이 프론트엔드 개발자💻💛🤙🏼

0개의 댓글