[프로그래머스/코딩테스트 모음/Javascript] 21

TED·2023년 9월 18일
0

Javascript CodingTest

목록 보기
30/63
post-thumbnail

< 오늘의 문제 >

약수 구하기
369게임

약수 구하기

function solution(n) {
    var answer = [];
    for (let i = 1 ; i <= n ; i++) {
        if (n % i === 0) {
            answer.push(i)
        }
    }
    return answer;
}

-나의 풀이
: 풀이랄것도 없었다.. n에 i를 나누고 나머지값이 0이면 약수이기에 그값을 answer에 push했다.

369게임

function solution(order) {
    var answer = 0;
    let newOrder = order.toString().split("");
    
    for (let i = 0 ; i < newOrder.length ; i++) {
        // 현재 숫자를 정수로 변환
        const currentNumber = parseInt(newOrder[i]);
        // 숫자가 3, 6, 9 중 하나인 경우
        if (currentNumber === 3 || currentNumber === 6 || currentNumber === 9) {
            // 해당 숫자의 개수만큼 박수를 추가
            answer++
        }
    }
    return answer;
}
  • 나의 풀이
    : 주석으로 어느정도 풀이를 적어놓았다. 너무 하드코딩으로 푼거같아서 찝찝하여 다른사람 풀이를 봤는데 역시나 대단하다 다들..
function solution(order) {
  return [...String(order)].filter((v) => ["3", "6", "9"].includes(v)).length;
}
function solution(order) {
  return ("" + order).split(/[369]/).length - 1;
}
function solution(order) {
  return [...order.toString().matchAll(/[3|6|9]/g)].length;
}
  • 다른 사람 풀이
  1. 주어진 매개변수 order는 숫자 타입이므로, String type으로 변경해야 배열 형태로 나눌 수 있다. 따라서 […String(order)]하여 문자열 타입의 배열 형태로 복사 후 filter()함수를 통해 [‘3’, ‘6’, ‘9’]가 있는지 includes()를 사용하여 포함된 것의 length를 반환
    -> 캬....천재다..

  2. 문자열 형태의 배열로 복사한 order를 split(/[369]/)로 분할하여 그것들의 length - 1을 반환하였다. split()에 정규표현식을 사용하였다는 점이 기발하다
    -> -1을 한 이유는 인덱스값때문에 그런가..? 생각지도 못하게들 푼다..

  3. matchAll(/[3|6|9]/g).length를 사용하여 order에서 매칭되는 모든 것들의 개수를 반환
    -> 정규식 표현과 친해져야하는 이유같다..

참조

function solution(order) {
    var answer = 0;
    String(order).split("").map((n)=> {
        if(['3','6','9'].includes(n)){
        answer++
        }
    })
    return answer;
}
  • 다른 사람 풀이
    : 제일 와닿는 다른 사람 풀이라 가져왔다..
profile
컴맹 개발 입문자

0개의 댓글