알고리즘 문제풀이/프로그래머스
[프로그래머스] 멀쩡한 사각형
홍시홍
2020. 4. 5. 02:48
분류 : 구현
요구사항
대각선을 그었을때, 대각선에 속하지 않는 사각형의 갯수 구하기
풀이
정답 도출식은 w*h - (w+h-gcd)이다
gcd구하는 방법은 유클리드 호제법이 있던데 그냥 구현해 보았따
우리 흔히 하는 방법으로 구했다
안나눠질때 까지 나누어주고 나눈 숫자는 곱해서 gcd를 찾는다
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
long long gcd1(long long w, long long h) {
long long num = 1;
while (true) {
long long tempmin = min(w, h);
long long flag = 0;
for (int i = 2; i <= tempmin; i++) {
if (w % i == 0 && h % i == 0) {
w = w / i;
h = h / i;
num = num * i;
flag = 1;
break;
}
}
if(flag==0)
break;
}
return num;
}
long long solution(int w, int h)
{
long long answer = 1;
long long nw = w;
long long nh = h;
long long gcdnum = gcd1(nw, nh);
answer = (nw * nh) - (nw + nh - gcdnum);
return answer;
}