Programming

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

jay-dev 2023. 6. 26. 19:13

프로그래머스 문제 링크

My Solution / Try

  • 객체의 키/밸류를 활용
  • !isNan()을 활용해 숫자인지 아닌지 판별
function solution(s) {
    
    let obj = {
        'zero': '0',
        'one': '1',
        'two': '2',
        'three': '3',
        'four': '4',
        'five': '5',
        'six': '6',
        'seven': '7',
        'eight': '8',
        'nine': '9',
        }
    
    let result = ''
    let str = ''
    
    for(let i = 0; i < s.length; i++){       
        if(!isNaN(s[i])){
            result += s[i]
            continue;
        }
        else {            
            str += s[i];       
            if(obj[str]){
                result += obj[str]
                str = ''
            }
        }   
    }
    return Number(result)
}

Advanced Solution

  • 배열의 index를 활용
  • 반복문을 돌며 문자열이 numbers[i]와 일치한다면 numbers[i]를 기준으로 split하여 배열로 만듦
  • 그 index값이 곧 숫자이므로 join(i)를 활용해 문자열로 병합
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);
}