[알고리즘C++] 카펫

후이재·2020년 9월 7일
1

오늘의 문제

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

카펫

나의 풀이

#include <string>
#include <vector>
#include <math.h>

using namespace std;
int garo;
int sero;
void quad_eqn(double a, double b, double c)
{
     double d, x, y;
     d=b*b-4*a*c;
     if(d>0)
     {
         x=(-b-sqrt(b*b-4*a*c))/2*a;
         y=(-b+sqrt(b*b-4*a*c))/2*a;
         garo = max(x, y);
         sero = min(x, y);
     }
     else if(d==0)
     {
         x=b/(-2*a);
         garo =x;
         sero =x;
     }
}
vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int a = 1;
    int b = (-1)*((brown+4)/2);
    int c = brown + yellow;
    quad_eqn(a, b, c);
    answer.push_back(garo);
    answer.push_back(sero);
    return answer;
}

모범 답안

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int red) {

    int len = brown / 2 + 2;

    int w = len - 3;
    int h = 3;

    while(w >= h){
        if(w * h == (brown + red)) break;

        w--;
        h++;
    }

    return vector<int>{w, h};
}

배울 점

  • 그냥 매번 더하고 빼면서 가능하기도 하다
  • 이차방정식을 풀 수 있게 되었다.
profile
공부를 위한 벨로그

0개의 댓글