[프로그래머스] Lv.1 숫자 문자열과 영단어 (JavaScript)

혜린·2022년 5월 27일
0
post-thumbnail

🔐 숫자 문자열과 영단어


문제

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

숫자영단어
0zero
1one
2two
3three
4four
5five
6six
7seven
8eight
9nine

입출력 예제

sresult
"one4seveneight"1478
"23four5six7"234567
"2three45sixseven"234567
"123"123



🔑 풀이


나의 풀이

풀이 과정

  1. s[i]가 number인가 string인가?
    ◾ 문자열 s의 각 자릿수를 돌며 number인지 string인지를 구분하는 게 우선!
    s[i] 에 숫자 1을 곱해서 number인지 string인지를 판별해주었다.

  2. s[i]가 string일 때
    ◾ 빈 문자열 word를 선언해서 한 글자씩 넣어주었다.
    ◾ numString 요소에 해당되는 문자가 완성되면, numString에서 찾아 answer에 숫자로 넣어준다.
    ◾ numbString 요소의 각 index는 해당 숫자와 일치하므로, index를 찾아 answer에 넣어주면된다.
    ◾ 빈 문자열 word가 numString 요소에 해당되는 문자로 완성되어 answer에 숫자까지 넣어주었다면 다시 빈 문자열로 비워준다.

  3. s[i]가 number일 때
    ◾ answer에 해당 요소를 그냥 넣어주면 된다.
function solution(s) {
    const numString = ["zero", "one", "two", "three", "four", 
                       "five", "six", "seven", "eight", "nine"];
    const num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    let word = "";
    let answer = "";
    
    for(let i = 0; i < s.length; i++){
      	// string일 때
        if(!num.includes(s[i] * 1)){  
            word += s[i]; 
            if(numString.includes(word)){ // 하나의 영단어로 완성되었을 때
                answer += numString.indexOf(word);
                word = "";
            }
        // number일 때
        } else {
			answer += s[i];
        }
    }
  
    return answer * 1;
}

정확성 테스트



🔗 링크


2021 카카오 채용연계형 인턴십, 숫자 문자열과 영단어

profile
FE Developer

0개의 댓글