JavaScript - 프로그래머스 레벨 : 0(16) - ORDER BY '정답률'

먹보·2023년 1월 3일
0

1. 다항식 더하기

문제 : 한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.

function solution(polynomial) {
  // term : 항들만 모아놓은 배열
  // xVar : x를 변수로 가진 항들만 모아놓은 배열
  // constant : 상수항들만 모아놓은 배열
    const term = polynomial.split(' + ')
    const xVar = term.filter(x => x.match('x'))
    const constant = term.filter(x => x.match(/[0-9]+$/))
    const resultTerm = [];
  // cof : xVar의 계수들의 합
  // sum : 상수항들의 합
    let cof = 0;
    let sum = 0;
  
  // x를 변수를 가진 동류항들만 더한 후 결과에 쓰일 배열에 푸쉬 
    for (let i of xVar){
        if (i == 'x'){
            cof++
        } else {
            cof += parseInt(i)
        }
    }
    if (cof > 1){
     resultTerm.push((cof + 'x')) 
    } else if (cof == 1){
      resultTerm.push('x')
    }
  // 상수항들만 더한 후 결과에 쓰일 배열에 푸쉬
    for (let j of constant){
        sum += Number(j)
    }
    if (sum > 0){
        resultTerm.push(sum)
    }

    return resultTerm.join(' + ')
}

🗒️코멘트 : 접근 방식

  • 동류항끼리 묶기
  • 동류항끼리 계산해주기
  • 결과 값을 배열에 담고 join으로 합쳐주기

fiter메서드를 제대로 사용해보았다~ 날이 갈수록 느는 메서드 사용 방식

2. OX퀴즈

문제 : 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

function solution(quiz) {
    const answer = [];
    for(i of quiz){
        answer.push(validator(i))
    }
    return answer;
}

function validator(n) {
    let sum = 0;
    const term =  n.split(' ').filter(x => x.match(/[0-9]/))
    const answer = term.pop();

    if(n.includes('+')){
        sum = Number(term[0])+Number(term[1])
    } else {sum = Number(term[0]) - Number(term[1])}

    if(sum == answer){
        return "O"
    } else {return "X"}
}

🗒️코멘트 : NULL

3. 다음에 올 숫자

문제 : 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

function solution(common) {
  //arDiff = 등차수열의 공차
  //geDiff = 등비수열의 공비
  arDiff = common[1] - common[0];
  geDiff = common[1]/common[0];
  
  if((common[1] + arDiff) == common[2]){
    return common.pop() + arDiff
  } else {return common.pop() * geDiff}
}

🗒️코멘트 : 공차와 공비를 구한 후, 공차를 만족하면 등비수열로, 공비를 만족하면 등비수열로 가정하여 다음 인덱스 계산

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글