개발자 '쑥말고인절미'

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

STUDY/코딩테스트

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

쑥말고인절미 2022. 9. 28. 21:33

문제


내 답안

function solution(s) {
    var answer = '';
    let alphabet = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
    let findword = '';
    
    for(let i=0; i<s.length; i++) {
        if(s[i].charCodeAt() >= 48 && s[i].charCodeAt() <= 57) {
            answer += s[i];
        } else {
            findword += s[i];
            if(alphabet.indexOf(findword) > -1) {
                answer += (alphabet.indexOf(findword));
                findword = '';
            } 
        }
    }
    
    return Number(answer);
}

메모

테스트10번을 계속 통과를 못해서 왜인가 싶었더니 100을 입력했을 때 아웃풋이 1로 나오고 있었다. 그 이유는 아스키코드를 분별하는 if문에서 숫자 0의 아스키 코드인 48이 아닌 숫자 1을 의미하는 49부터 값을 확인하고 있어서 숫자 0을 파악하지 못하고 있었던 것이다. 그 부분을 고쳐줬다니 잘 돌아갔다. 한시간 넘게 푼 거 같은데 흠... 친구 소스를 보고나니 JS 메소드들을 활용하지 못하고, 문자열 관련 함수를 생각을 안하는 것 같다. 이번 주말에는 map이나 match 등과 같은 JS의 기본 메소들이라고 불릴만한 것들을 공부해야겠다. 문자열 메소드도!!

아래가 친구 소스!

function solution(s) {
    var compare = ['zero','one','two','three','four','five','six','seven','eight','nine'];
    var b = 0;
    var c = 0;
    
    compare.map((x,i) => {
        if(s.match(x) == x ){
          b = s.replaceAll(x,i);
          c=b;
          s=b;
        }else{
            b=s;
        }
    })
    return parseInt(b);
}

참고링크

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220175224345 

 

자바스크립트 아스키코드 변환하기 (charCodeAt / fromCharCode)

- charCodeAt / fromCharCode 란? charCodeAt 은 문자열중 하나를 선택하여 아스키코드 번호로 변환...

blog.naver.com

https://www.delftstack.com/ko/howto/javascript/javascript-array-contains/#indexof-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-javascript%EC%97%90%EC%84%9C-%EB%B0%B0%EC%97%B4%EC%97%90-%EA%B0%92%EC%9D%B4-%EC%9E%88%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8

 

배열에 JavaScript의 값이 포함되어 있는지 확인

이 튜토리얼에서는 JavaScript에서 배열에 값이 포함되어 있는지 확인하는 방법을 소개합니다.

www.delftstack.com