GitHubSeob
C++ / 프로그래머스 / 멀쩡한 사각형 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/62048
코딩테스트 연습 - 멀쩡한 사각형
가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을
programmers.co.kr
문제풀이
주어진 w와 h 이용해서 직선의 방정식을 세우고 x값을 넣으면서 y값을 구하고 버림을 한 값을 모두 더한 값에 *2를 한다.
직선의 방정식은 y=-3x/2+12.
x가 7이면 12-10.5 = 1.5인데 직선과 겹치는 정사각형은 사용할 수 없으므로 버림을 한 값인 1을 저장한다.
x가 6이면 12-9 = 3
...
x가 1이면 12-1.5 = 10.5 -> 10
값을 모두 더하면 40이 된다.
직선 기준으로 아래 정사각형만 구했으므로 *2를 하여 위 정사각형도 구한다.
코드
#include <cmath>
using namespace std;
long long solution(int w, int h) {
long long answer = 0;
double x(0);
double fx(0);
for (x = w; x > 0; --x) {
fx = (double)h * x / (double)w * -1 + (double)h;
answer += int(floor(fx));
}
return answer * 2;
}
'Programmers > Level 2' 카테고리의 다른 글
C++ / 프로그래머스 / 기능개발 (0) | 2022.04.14 |
---|---|
C++ / 프로그래머스 / 124 나라의 숫자 (0) | 2022.04.14 |
C++ / 프로그래머스 / 오픈채팅방 (0) | 2022.04.13 |
C++ / 프로그래머스 / 가장 큰 수 (0) | 2021.11.12 |
C++ / 프로그래머스 / 주식가격 (0) | 2021.11.12 |