[프로그래머스] 레벨1 220404

📝핸드폰 번호 가리기

나의 풀이

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

다른사람의 풀이

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

정규표현식 공부해야겠당...

📝하샤드 수

나의 풀이

function solution(x) {
    const number_list = Array.from(x+"");
    let sum = 0;
    number_list.forEach(number => sum+=parseInt(number));
    return x % sum === 0;
}

다른사람의 풀이

function Harshad(n){
  return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}

신박한 풀이법이 많아서 재밌었다.

📝평균 구하기

나의 풀이

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

이전 문제에서 본 reduce를 떠올려서 활용했다. 가장 기본적인 풀이법.

📝콜라츠 추측

나의 풀이

function solution(num) {
    for(let answer=0; answer<=500; answer++){
        if(num === 1) {
            return answer;
        } else if(num % 2 === 0) {
            num = num/2;
        } else {
            num = num*3+1;
        }
    }
    return -1;
}

다른사람의 풀이

function collatz(num) {
    var answer = 0;
    while(num !=1 && answer !=500){
        num%2==0 ? num = num/2 : num = num*3 +1;
    answer++;
  }
    return num == 1 ? answer : -1;
}

너무 예쁜코드... 삼항연산자를 생각을 하긴했는데 확실하게 이해하면서 쓰려고 하다보니 for문에 if으로 작성했다. 작성한 후에도 한번 더 생각해보기.

좋은 웹페이지 즐겨찾기