본문 바로가기
정리/알고리즘

프로그래머스 - 멀쩡한 사각형

by Hudini30 2022. 4. 4.

해당 문제를 처음에는 기울기를 통해 문제를 풀려고 했었습니다. 예를 들어 예시와 같은 w = 8,h = 12 인 경우에 기울기를 구하면 1.5라는 값이 나왔고, 그림을 그려보니 기울기의 올림 값을 w 와 곱한 갯수가 빠진 것을 알 수 있었습니다. 간단하게 이렇게 문제를 풀어보니, 원하는 결과가 나오지 않았습니다. 예외 케이스를 찾아보니 w = 3, h = 5인 경우가 예외 상황인걸 알 수 있었습니다. 이런식으로 찾다 보니 최종적으로 다음과 같은 결과를 얻을 수 있었습니다.

public long solution(int w, int h) {
        long count = 0;

        for (int x = 0; x < w; x++) {
            count += Math.ceil((double) h * (x + 1) / w) - Math.floor((double) h * x / w);
        }

        return (long) h * w - count;
    }

댓글