[프로그래머스 lev1/JS] 숫자 문자열과 영단어

woolee의 기록보관소·2022년 11월 8일
0

알고리즘 문제풀이

목록 보기
59/178

문제 출처

프로그래머스 lev1 - 숫자 문자열과 영단어

문제

나의 풀이

function solution(s) {
  let obj = {
    'zero' : 0, 'one' : 1, 'two' : 2, 'three' : 3, 'four' : 4,
    'five' : 5, 'six' : 6, 'seven' : 7, 'eight' : 8, 'nine' : 9,
  }

  let cpr = '';
  let answer = '';
  for (let i=0; i<s.length; i++) {
    if (isNaN(s[i])) {
      cpr += s[i];
    }

    if (obj[cpr]>=0) {
      answer+=obj[cpr];
      cpr='';
    }

    if (!isNaN(s[i])) {
      answer +=s[i];
    }

  }
  return parseInt(answer);  
}

console.log(solution("one4zeroeight"));

다른 풀이

해당 문자열로 split
split(x)면 x를 기준으로 나누늑 서이고, join(y)면 y를 기준으로 묶는 것임. 즉, 각 배열 사이에 y가 들어간다.

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);
}

정규식 풀이

function solution(s) {
    s = s.replace(/zero/gi, 0)
    .replace(/one/gi, 1)
    .replace(/two/gi, 2)
    .replace(/three/gi, 3)
    .replace(/four/gi, 4)
    .replace(/five/gi, 5)
    .replace(/six/gi, 6)
    .replace(/seven/gi, 7)
    .replace(/eight/gi, 8)
    .replace(/nine/gi, 9)
    return parseInt(s);
}
profile
https://medium.com/@wooleejaan

0개의 댓글