ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] JavaScript 알고리즘 | Lv.0 영어가 싫어요
    ► JS Algorithm/Programmers 2024. 8. 16. 16:27
    반응형

    🔒 문제 설명

    영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers 매개변수로 주어질 , numbers 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


    🔒 제한사항 

    • numbers는 소문자로만 구성되어 있습니다.
    • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
    • 1 ≤ numbers의 길이 ≤ 50
    • "zero" numbers 앞에 없습니다.

    🔒 입출력 예

    numbers result
    "onetwothreefourfivesixseveneightnine" 123456789
    "onefourzerosixseven" 14067

    🔒 입출력 예 설명

    입출력 예 #1

    • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

    입출력 예 #1

    • "onefourzerosixseven" 숫자로 바꾼 14067 return합니다.

     

    🔐 solution of mine

    Object.keys()

    Array.prototype.forEach()

    RegExp

    String.prototype.replace()

    단항 더하기 (+)

    const map = {
      zero: 0,
      one: 1,
      two: 2,
      three: 3,
      four: 4,
      five: 5,
      six: 6,
      seven: 7,
      eight: 8,
      nine: 9,
    };
    
    function solution(numbers) {
      Object.keys(map).forEach((eng) => {
        const reg = new RegExp(eng, "g");
    
        numbers = numbers.replace(reg, map[eng]);
      });
    
      return console.log(+numbers);
    }
    
    solution("onetwothreefourfivesixseveneightnine"); // expected output: 123456789
    solution("onefourzerosixseven"); // expected output: 14067

     


     

    🔐 GPT's solution

    String.prototype.split()

    Array.prototype.join()

    function solution(numbers) {
      const map = {
        zero: 0,
        one: 1,
        two: 2,
        three: 3,
        four: 4,
        five: 5,
        six: 6,
        seven: 7,
        eight: 8,
        nine: 9,
      };
      for (let word in map) {
        numbers = numbers.split(word).join(map[word]);
      }
    
      return console.log(parseInt(numbers));
    }
    
    solution("onetwothreefourfivesixseveneightnine"); // expected output: 123456789
    solution("onefourzerosixseven"); // expected output: 14067

     

    🔐 solution of others

    String.prototype.replace()

    RegExp

    Number

    function solution(numbers) {
      const map = {
        zero: 0,
        one: 1,
        two: 2,
        three: 3,
        four: 4,
        five: 5,
        six: 6,
        seven: 7,
        eight: 8,
        nine: 9,
      };
    
      const num = numbers.replace(
        /zero|one|two|three|four|five|six|seven|eight|nine/g,
        (v) => map[v]
      );
    
      return console.log(Number(num));
    }
    
    solution("onetwothreefourfivesixseveneightnine"); // expected output: 123456789
    solution("onefourzerosixseven"); // expected output: 14067

    🔐 solution of others

    Number

    Array.prototype.reduce()

    String.prototype.replaceAll()

    function solution(numbers) {
      return console.log(
        Number(
          [
            "zero",
            "one",
            "two",
            "three",
            "four",
            "five",
            "six",
            "seven",
            "eight",
            "nine",
          ].reduce((acc, cur, idx) => acc.replaceAll(cur, idx), numbers)
        )
      );
    }
    
    solution("onetwothreefourfivesixseveneightnine"); // expected output: 123456789
    solution("onefourzerosixseven"); // expected output: 14067

     


     

    반응형
Designed by Tistory.