🧬알고리즘/Programmers

[JavaScript] 숫자 문자열과 영단어 - 2021 카카오 채용연계형 인턴십

뉴발자 2024. 9. 11. 18:57
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

네오와 프로도가 숫자놀이를 하고 있습니다.

 

네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

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

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다.

 

s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

0 1 2 3 4 5 6 7 8 9
"zero" "one" "two" "three" "four" "five" "six" "seven" "eight" "nine"

 

 

나의 풀이

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 +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]);
    answer = arr.join(i);
  }

  return Number(answer);
}

 

 

풀이 방법

나의 풀이 방법

1. 정규식과 replace() 함수를 사용해서 문자열 s안의 영문으로 표현된 숫자들을 숫자로 바꿔준 뒤 Number 타입으로 변환했다.

function solution(s) {
  // 정규식과 replace() 함수를 사용하여 영문 숫자를 숫자로 변환
  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");
  
  // Number 타입으로 변환
  return +s;
}

 

 

다른 풀이 방법

1. 0부터 9까지의 숫자를 영문으로 작성한 단어들을 배열에 넣어주고 문자열 s를 answer 변수에 복사한다. 

function solution(s) {
  // 1
  let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
  var answer = s;
}

 

2. for()문을 사용해 numbers 배열만큼 반복해준다.

function solution(s) {
  // 1
  let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
  var answer = s;

  // 2
  for(let i=0; i< numbers.length; i++) {
    ...
  }
}

 

3. split() 함수를 사용해 numbers[i]와 일치하는 문자를 찾아 string 배열로 만들어준다.

function solution(s) {
  // 1
  let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
  var answer = s;

  // 2
  for(let i=0; i< numbers.length; i++) {
    // 3
    let arr = answer.split(numbers[i]);
  }
}

 

4. join() 함수를 사용해서 split() 으로 자른 두 문자열 사이에 i 값을 넣어서 다시 문자열로 만들어준다.

function solution(s) {
  // 1
  let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
  var answer = s;

  // 2
  for(let i=0; i< numbers.length; i++) {
    // 3
    let arr = answer.split(numbers[i]);
    // 4
    answer = arr.join(i);
  }

  return Number(answer);
}

 

 

 

 

 

 

 

 

 

 

728x90