JAVA/Algorithm

[프로그래머스/java] 멀쩡한 사각형 (Summer/Winter Coding 2019) + 최대공약수 구하기

nang. 2020. 12. 26. 21:39
반응형
SMALL

https://programmers.co.kr/learn/courses/30/lessons/62048

 

코딩테스트 연습 - 멀쩡한 사각형

가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을

programmers.co.kr

 

  • 대각선 꼭짓점을 이었을 때 지나가는 사각형을 제외한 사각형의 총 개수 구하는 문제
  • 최대공약수 이용하기
class Solution {
    public long solution(int w, int h) {
        long answer = 1;
        
        // W, H의 범위가 1억까지이기 때문에 long형으로 변환
        long lw = w;
        long lh = h;
        
        if(lw >= lh) { // 가로가 더 큰 경우
            answer = lw * lh - (lw + lh - gcd(lw, lh)); // 구하는 식 (최대공약수 이용)
        } else { // 세로가 더 큰 경우
            answer = lw * lh - (lw + lh - gcd(lh, lw));
        }
        
        return answer;
    }
    
    // 최대공약수 구하기
    long gcd(long big, long small) {
        while(small > 0) {
            long temp = big % small;
            
            big = small;
            small = temp;
        }
        
        return big;
    }
}
반응형
LIST