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;
}
'Coding_Test_C++' 카테고리의 다른 글
Programmers Level 2: 방문 길이(C++) (0) | 2021.06.29 |
---|---|
Programmers Level 2: 땅따먹기(C++) (0) | 2021.06.28 |
BaekJoon 11727번: 2xn 타일링 2(C++) (0) | 2021.06.27 |
BaekJoon 1043번: 거짓말(C++) (0) | 2021.06.24 |
BaekJoon 9465번: 스티커(C++) (0) | 2021.06.23 |