본문 바로가기
알고리즘 스터디/프로그래머스 스킬체크 레벨 1(끝)

[프로그래머스 스킬체크 레벨 1] 숫자 문자열과 영단어 풀이 및 설명 - 자바스크립트[JavaScript]

by 레일라오리덕 2021. 7. 19.
728x90

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

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

programmers.co.kr

 

문제

 

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

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

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

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

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

     

     숫자           영단어

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

 

 

제한 사항

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

결괏값 예시

 

s result
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

 

기본 제공 틀

 

function solution(s) {
    var answer = 0;
    return answer;
}

 

풀이 [JavaScript]

 

이번 문제는 간단히 replace함수와 정규표현식으로 풀어보았습니다.

들어온 s를 replace함수가 돌면서 zero, one, two...각각의 단어들을 찾고 찾은 단어들을 해당 숫자로 바꾼 후, 입력된 값이 문자열이기 때문에 숫자로 변환해서 리턴해주었습니다.

 

728x90
function solution(s) {
    return Number(s.replace(/zero/gi,"0").replace(/one/gi,"1").replace(/two/gi,"2").replace(/three/gi,"3").replace(/four/gi,"4").replace(/five/gi,"5").replace(/six/gi,"6").replace(/seven/gi,"7").replace(/eight/gi,"8").replace(/nine/gi,"9"));
}

 

다른 사람의 풀이 [JavaScript]

 

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);
}

위의 방식은 다른 분의 풀이인데요, 배열에 주어진 글자들을 넣어주고, 해당 글자와 일치하는 문자를 기준으로 split을 해줍니다. 기준이 된 예를 든 zero는 사라지게 되고, 뜯어진 그 부분의 기준을 해당 값의 인덱스를 기준으로 join을 해주어 원래 있던 zero 자리엔 0이 대신하여 들어가게 됩니다.

 

채점 결과 [JavaScript]

 

728x90

댓글