알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - Summer/Winter Coding(2019) - 멀쩡한 사각형

HRuler 2020. 11. 15. 12:00

1. 문제

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

 

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

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

programmers.co.kr

2. 나의 풀이

class Solution {
    public long solution(int w, int h) {
        long answer = 0;
        
        int w_copy = w;
        int h_copy = h;
        while(w_copy > 0) {
        	int temp = w_copy;
        	w_copy = h_copy % w_copy;
        	h_copy = temp;
        }
        
        
        answer = ((long)w * h) - w - h + h_copy;
        
        return answer;
    }
}

3. 다른 사람 풀이

import java.math.BigInteger;

public class Solution {

    public long solution(int w, int h) {
        long totalCount = (long) w * (long) h;
        long diagonalCount = w + h - BigInteger.valueOf(w).gcd(BigInteger.valueOf(h)).longValue();

        return totalCount - diagonalCount;
    }
}