-

[프로그래머스] 레벨 2 - 멀쩡한 사각형 본문

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

Comments