티스토리 뷰

Data Structure & Algorithm

JS_Pig Latin

Alledy 2019. 3. 21. 19:39
  • 문제

    첫 번째 글자가 자음일 경우 문자의 맨 뒤로 보낸다. 앞글자가 모음이 될 때까지 반복한 뒤에 "ay"를 붙인다.

    첫 번째 글자가 모음일 경우 문자 맨 뒤에 "way"를 붙인다.

     

    • 예시
    translatePigLatin("glove") should return "oveglay".
    

  • 내가 푼 답

    function translatePigLatin(str) {
      if((/[aeiou]/).test(str[0])) {
        return str + "way";
      } 
      
      if(!(/[aeiou]/).test(str)) {
        return str + "ay";
      }
    
      while(!(/[aeiou]/).test(str[0])) {
        var result = str.substring(1) + str[0];
        str = result;
      }
      return result + "ay";
    }
    

  • Intermediate Solution

    function translatePigLatin(str) {
      function check(obj) {
          return ['a','i','u','e','o'].indexOf(str.charAt(obj)) == -1 ? check(obj + 1) : obj;
      }
    
      return str.substr(check(0)).concat((check(0) === 0 ? 'w' : str.substr(0, check(0))) + 'ay');
    }
    

     

  • Advanced Solution

    function translatePigLatin(str) {
        var strArr = [];
        var tmpChar;
    
        // check if the char is consonant using RegEx
        function isConsonant(char) {
            return !/[aeiou]/.test(char);
        }
    
        // return initial str + "way" if it starts with vowel
        // if not - convert str to array
        if (!isConsonant(str.charAt(0)))
            return str + "way";
        else
            strArr = str.split("");
    
        // push all consonats to the end of the array
        while (isConsonant(strArr[0])) {
            tmpChar = strArr.shift();
            strArr.push(tmpChar);
        }
     // convert array to string and concatenate "ay" at the end  
     return strArr.join("")+"ay";
    }
    

'Data Structure & Algorithm' 카테고리의 다른 글

선택정렬, 퀵정렬  (0) 2019.03.28
분할정복  (0) 2019.03.28
JS_Wherefore Art Thou  (0) 2019.03.21
JS_Diff Two Arrays  (0) 2019.03.20
JS_Sum All Numbers in Range  (0) 2019.03.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함