Javascript

[프로그래머스 Level1] 숫자 문자열과 영단어 - 나의 코드(Javascript)

728x90
반응형

🚨문제

네오 표정 귀여워;;

https://programmers.co.kr/learn/courses/30/lessons/81301?language=javascript

 

 

🔅예제 이해

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

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

 

 

☺️나의 코드

정규식, split(), charAt(), .findIndex()

function solution(s) {
    let engs = ["zero","one","two","three","four","five","six","seven","eight","nine"];
    let str = s;
    //단어가 되어 묶일 변수
    let word = "";
    //글자를 하나하나 검사한다.
    for(var i = 0; i<s.split('').length; i++){
    	//문자 하나에 커서를 둔다
        const alph = s.charAt(i);
        //해당 문자가 소문자인 경우 
        if(/[a-z]/.test(alph)){
        //단어에 해당 문자를 추가하고
            word += alph;
            //word가 engs에 있는 단어인지 확인한다.
            var okWord = engs.findIndex((e) => {return e === word});
            //만약 engs에 있는 단어인 경우 engs에 몇번째 index인지 가져온다.
            //예를 들어 two가 있다면 이는 engs[2]기에 2 리턴
            if(okWord >= 0){
            	//단어를 리턴받은 index로 치환한다.
                str = str.replace(word, okWord);
                //새로운 단어가 담겨야 하기에 word는 비워준다.
                word = "";
            }
        }
    }
    //숫자형으로 리턴하기 위해 *1을 곱해준다.
    var answer = str*1;
    return answer;
}

 

 

❗️ 풀이 순서

  • 숫자와 문자가 섞인 s를 한글자 한글자 검사한다.

s.charAt(i) : 문자열에서 index로 글자 선택

 

  • 만약 문자인 경우 word에 한글자씩 담고, 해당 글자가 engs에 포함되어 있는지 확인한다.

engs.findIndex((e) => {return e === word}) : 참인 경우 배열의 index를 리턴한다.

 

  • 만약 포함되어 있는 경우 해당 문자를 index로 바꾼다.

str.replace(word, okWord) : str문자열에서 word를 okWord로 바꾼다.

 

 

 

 

728x90
반응형