문제

 

풀이 코드

function solution(x) {
  let stringTox = x + '';
  let sum;
  sum = stringTox.split('').reduce((s, current) => s + current * 1, 0);

  return x % sum === 0;
}

 

풀이 과정

문자열 함수, 배열 함수를 사용하여 구현 하였다!

 

1) x 에 '' 빈 문자를 더하여 String 으로 변환하고, 이를 stringTox 변수에 담았다.

2) split 함수를 이용해 문자열의 각 요소를 배열로 만들었고, 해당 배열을 reduce 함수를 통해 모두 더해주었다, 더한 값을 sum 에 저장

3) x 와 sum 과의 나머지 연산에서 나머지가 없으면 하샤드 수 true 를 반환하게 구현했다.

 

슬슬 자바스크립트의 문자열과 배열의 함수에 대해 조금씩 익숙해 지고 있는거 같아 뿌듯하다!!! ㅎㅎ

 

다른사람의 코드

function solution(x) {
    let num = x;
    let sum = 0;
    do {
        sum += x%10;
        x = Math.floor(x/10);
    } while (x>0);

    return !(num%sum);
}

함수를 사용해서 구현하는것도 좋지만, 

반응을 보니 아무래도 수학적으로 접근하는게 더 빠르다고 한다

 

물론 이런 간단한 문제에서는 효율이 차이가 나봤자 이지만

프로그래밍적으로 생각하면 속도도 중요하니 너무 함수에 의존하면 안되겠다.

문제

 

풀이 코드

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 하였다.

+ Recent posts