1-4. 프로그래머스
[프로그래머스] 레벨 2 - 멀쩡한 사각형
asdklfjlasdlfkj
2020. 1. 31. 15:21
https://programmers.co.kr/learn/courses/30/lessons/62048
코딩테스트 연습 - 멀쩡한 사각형 | 프로그래머스
가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상
programmers.co.kr
레벨 2의 문제다.
생성되는 직사각형의 개수는 gcd만큼이고, 한 직사각형 내 생성되는 하얀 네모는 (w/gcd) + (h/gcd)-1개이다.
따라서, 전체 네모의 개수 sum 에서 gcd개 만큼 (w/gcd)+(h/gcd)-1개를 곱한것을 빼주면 된다.
자료형에 유의해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
using namespace std;
long long solution(int w,int h)
{
long long answer;
int gcd;
long long sum = (long long)w * (long long)h;
for(int i = ( w > h ) ? h : w; i > 0; i--){
if(w % i == 0 && h % i == 0){
gcd = i;
break;
}
}
answer = sum - gcd * ((w/gcd)+(h/gcd)-1);
return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |