Coding_Test_C++

Programmers Level 2: 멀쩡한 사각형(C++)

펄크럼 2021. 6. 28. 16:43

https://programmers.co.kr/learn/courses/30/lessons/62048?language=cpp 

 

코딩테스트 연습 - 멀쩡한 사각형

가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을

programmers.co.kr

풀이법

1) 단순한 구현 문제이다. 

2) y증가량/x증가량을 이용하여 기울기를 구하고, 1부터w까지의 값을 확인하여 식을 만들었다.

이 후 값보다 작은 정수들을 최종 answer에 더 해주어 문제를 해결하였다.(대칭이 존재하니 x2는 필수!)

-> double 대신 float를 사용하게 되면 완전한 정답을 얻을 수 없으니 꼭 double을 사용해야 한다

#include <math.h>
using namespace std;

long long solution(int w,int h) {
    long long answer = 0;
    double a=-(h/(double)w);//기울기
    for(int i=1; i<=w;i++)
    {
        long long temp=floor(a*i+h);
        answer+=temp;
    }
    return answer*2;
}