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

요리하는코더·2021년 8월 5일
0

알고리즘 - 문제

목록 보기
3/48
post-thumbnail

코드

내 풀이는 이렇고

function solution(s) {
    var answer = 0;
    
    const number = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9};
    
    for (const [key, value] of Object.entries(number)) {
        // s = s.replaceAll(key, value);
        var re = new RegExp(key, 'g');
        s = s.replace(re,value);
    }

    return Number(s);
}

다른 사람의 풀이 중 잘 풀었다고 생각되는 코드는 아래와 같다.

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]);
    console.log(`arr: ${arr}`)
    answer = arr.join(i);
    console.log(`answer: ${answer}`)
  }

  return Number(answer);
}

풀이 및 소감

영어와 숫자를 Object로 미리 선언해두고 for를 돌면서 치환을 해줬다. replace를 사용하니 하나만 바뀌고 replaceAll이 mdn에 있는데 작동을 안 해서 정규식을 사용해서 해결했다. 다른 사람의 코드를 첨부한 이유는 splitjoin을 잘 사용했고 console을 통해 어떻게 동작하는지 확인하면 좋을 거 같았다. JS 내장 메소드도 잘 쓸 수 있고 많이 연습해야겠다.

profile
요리 좋아하는 코린이

0개의 댓글