[프로그래머스-Level 1] [JavaScript] 숫자 문자열과 영단어 - 객체 사용

2022. 12. 5. 21:28알고리즘/프로그래머스 알고리즘 공부

반응형

[문제]

2021 카카오 채용연계형 인턴십 문제입니다.

입력값 s가 주어집니다. 이 s는 one4seveneight처럼 일부 숫자가 영어 문자로 변환된 값입니다. 이 문자열을 모두 숫자로 변환하는 것이 문제입니다.

 

[알고리즘]

객체, while, indexOf, replace 사용

 

[풀이]

저는 객체 key: value를 활용하였으나 단순 배열, replace만 사용하는 등 더 간결하게 작성할 수 있습니다.

1) 객체를 먼저 선언해서 zero부터 nine까지 key: value로 pair 될 수 있게 해줍니다.

2) while 반복문을 사용해서 s가 영어 문자를 포함하는 경우 즉 순전한 숫자가 아닌 경우를 판별합니다.

3) for (const key in num)를 활용해서 num 객체에 선언되어 있는 모든 key 값에 접근합니다.

4) indexOf 함수를 사용하면 문자열이 포함된 인덱스 값을 반환하여 문자열이 있는지 여부를 알 수 있습니다.

5) replace를 사용하여 key의 문자열을 해당 key의 value 값으로 대체해줍니다.

6) s는 String이므로 Number로 형변환하여 return해줍니다.

 

function solution(s) {
    // 객체 선언
    const num = {
        "zero": 0,
        "one": 1,
        "two": 2,
        "three": 3,
        "four": 4,
        "five": 5,
        "six": 6,
        "seven": 7,
        "eight": 8,
        "nine": 9
    };
    
    // 숫자만이 아닌 문자를 포함하는 경우
    while (isNaN(s))
        for (const key in num)
            // one부터 nine 중에 포함되어 있는 경우
            if (s.indexOf(key) > -1)
                // key를 value로 교체
                s = s.replace(key, num[key]);
    
    return Number(s);
}

 

반응형