본문 바로가기

Programmers

[프로그래머스] 카펫 (JS) - 완전탐색, 이차 방정식

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

완전탐색 풀이

function solution(brown, yellow) {
    const nums = brown+yellow;
    
    for(let y=1; y<=nums; y++){
        if(nums%y===0 && ((2*(nums/y)+2*y)-4)===brown){
            return [nums/y, y];
        }
    }
}

 

이차 방정식 풀이

function solution(brown, yellow) {
  const A = 2;
  const B = -(brown + 4);
  const C = 2*(brown+yellow);
  const discriminant = B * B - 4 * A * C;
  const root1 = (-B + Math.sqrt(discriminant)) / (2 * A);
  const root2 = (-B - Math.sqrt(discriminant)) / (2 * A);
  return [root1,root2];
}

정리

이차 방정식으로도 풀 수 있다.

xy = brown+yellow

2x+2y-4=brown

이 두 가지 식을 연립하면

2x^2-(brown+4)+2(brown+yellow)=0이 나온다.

 

근의 공식을 사용해서 x,y값을 구하면 된다.

참조

https://school.programmers.co.kr/questions/55050