[프로그래머스] 숫자 문자열과 영단어

JINSUNG LEE·2021년 10월 10일
0
post-thumbnail




function solution(s) {
   let num = {zero : "0", one: 1, two: 2, three: 3, four: 4, five: 5,
              six: 6, seven: 7, eight: 8, nine: 9}
   let word = ""
   let alpahbet = ""
   
   for(let i = 0; i < s.length; i++) {
       if(Number(s[i])) {
           word += s[i]
           continue;
       } else if(String(s[i])) {
           alpahbet += s[i]
           if(alpahbet === "0") {
               word += "0"
               alpahbet = ""
           }
       }
       
       if(num[alpahbet]) {
           word += num[alpahbet]
           alpahbet = ""
       }
   }
    
    return Number(word)
}

주어진 문자열은 숫자와 문자로 표현한 숫자가 존재한다.

문자로 이루어진 숫자들은 객체로 형성하여 반복문 순회 과정에 숫자일 경우 그대로 word 변수에 할당 및 문자인 경우 해당 문자는 alpahbet 변수에 할당한다.

만일 문자열이 다 정립될 경우 if(num[alpahber]) 객체가 숫자로 받아들어 조건문은 참인 조건으로 해당 객체의 프로퍼티값을 할당한다.

이번 문제에서 가장 큰 관건이 0 인 경우 였다.

0은 if(num[alpahber])에 false 조건으로 판단되기에 별도로 문자열 "0" 문자열을 선언해주었으며, 1000인 경우 "000" 으로 연속적으로 요소가 쌓이기 때문에 10만 할당되는 문제로 인해 alpahbet = "" 변수를 빈 문자열로 변경해야 한다.




모범답안


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);
}
profile
https://californialuv.github.io/Tech_Blog 이사 갔어용 🌎 🚀

0개의 댓글