1. 문제
자세한 문제 ( https://programmers.co.kr/learn/courses/30/lessons/81301 )

2. 내 코드

const matching = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];

const solution = (str) => {
  let answer = '';
  let tmp_number = '';
  for (let i of str) {
    if (isNaN(i)) {
      tmp_number += i;
      const matching_idx = matching.indexOf(tmp_number);
      if (matching_idx > -1) {
        answer += matching_idx;
        tmp_number = '';
      }
    } else {
      answer += i;
    }
  }
  return +answer;
};
  • 문자열을 isNaN을 통해 숫자인지 문자인지 판별
  • 숫자일 경우 그대로 answer에 더하고
  • 아닐 경우, 스택처럼 tmp문자열에 계속 더해서 숫자가 될 경우 answer에 더한다.

3. 최고의 답안

다른사람의 풀이를 보는데 진짜 쩌는 것을 보았다.

무려 좋아요 99개를 받은 풀이.

split과 join을 이용해 딱 9번만 반복하면 된다.

최고다,,,, 읽는데 짜릿해 이런 코드를 짜기 위해 노력해야겠다.

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다