바켱서 2021. 10. 9. 20:00

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

접근 방법

먼저 문제를 봤을 때 우리가 중학교 때 보았던 y = ax + b; 이 구조로 보게 되었다.

x의 값에 따라서 걸치게 되는 부분이 몇개인지를 보려면

Math.ceil( 올림 ) , Math.floor ( 버림 ) 을 이용하여 몇 개가 걸쳐지는지 보면 된다.

주의 사항

  1. 자료구조형 ( int 의 범위 & long의 범위를 생각해야한다. )

Need Know

  1. 구현

전체 코드 ( Java )

class Solution {
    public long solution(int w, int h) {
        long answer = (long)w*h;

        // 가로 세로가 같은 경우 (정사각형)
        if(w==h){
            answer -= w;
        }else{
            for(double i=1; i<=w; i++){
                answer -= (Math.ceil((double)h*i/w)-Math.floor((double)h*(i-1)/w));
            }
        }
        return answer;
    }
}