문제

 

풀이 코드

function solution(phone_number) {
  let starlen = phone_number.length - 4;
  return '*'.repeat(starlen) + phone_number.slice(-4);
}

 

풀이 과정

처음에 replace 를 생각했다 이걸 적용하려면 정규식을 잘 써야 하는데 

정규식에 대한 지식이 부족했다..

정규식으로 풀면 한줄이면 끝날거같았는데.. 도저히 생각이 나지 않아 다른 방법으로 구현 하였다.

 

repeat(숫자) : 숫자만큼 반복함

slice(인덱스) : 해당 인덱스 부터 끝까지의 문자열만 반환함

 

다른사람의 풀이

function hide_numbers(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}

정규식으로 풀어내셨다

정규식을 풀어 해석하면 다음과 같이 된다.

/g : 모든 문자열에 대해서 적용
\d : 모든 숫자
x(?=y) : y에 대한 조건을 허용하는 것을 뒤따라오는 x에만 대응된다. 대응 되면 x의 값을 바꾼다.
x(?!y) : x에 대한 조건을 허용하는 것을 뒤따라오는 y에만 대응된다. 대응 되면 x의 값을 바꾼다.
{n} :  앞 표현식이 n번 나타나는 부분에 대응

문제

 

풀이 코드

function solution(s) {
    return parseInt(s);
}

 

풀이 과정

생략

문제

 

풀이 코드

function solution(s) {
    let str;
    str = s.replace(/[^0-9]/g, '');
    return (str === s) && (s.length == 4 || s.length == 6);
}

 

풀이 과정

정규식을 이용하여 풀이 하였다!

정규식과 문자열의 replace 함수를 이용하여 

문자열중, 숫자로 이루어진것만 뽑아내어 str에 저장하였고, str 과 s 가 같은지 비교, 길이를 비교하여 return 하였다.

나름 잘 풀었다고 생각하지만 return 할때 너무 길어져서 답답했다

 

그래서 다른사람의 코드풀이를 봤다.

 

 

다른사람의 코드

function alpha_string46(s){
  var regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}

 

test 함수는 뭐지

이분도 정규식으로 풀었지만 내 코드에 비해 너무 간결하다

 

test 함수가 뭔지 알아봐야 할거 같다

문제

 

풀이 코드

function solution(arr) {
    return (arr.reduce((sum,current) => sum + current, 0) / arr.length)
}

 

풀이 과정

간단하게 reduce 함수를 통하여 배열의 모든 요소를 더하고, 배열의 길이로 나누어 평균값을 return 하였다.

문제

 

풀이 코드

function solution(n) {
  return (n + '').split('').map((num) => num * 1).reverse();
}

 

풀이 과정

자바스크립트의 배열 및 문자혈의 함수를 이용해 잘 풀어냈다!!

n + '' 를 통하여 문자열로 변환하고,

split 을 통해 각 요소를 분리하여 배열에 저장하고!

map 함수를 통해 String 을 Number형으로 변환하고!

reverse 를 통해 모든 요소를 뒤집었다!

 

아니 잘 풀었다고 생각했다,

대부분 나처럼 풀었겠지? 생각하고 다른 사람의 풀이를 봤다

 

다른사람의 풀이

function solution(n) {
    let arr = [];

    do {
        arr.push(n%10);
        n = Math.floor(n/10);
    } while (n>0);

    return arr;
}

이렇게 풀면 형변환을 2번이나 해야하는 수고로움이 없어진다

반성하자 반성!

 

* Math.floor 함수 숙지하기

+ Recent posts