본문 바로가기
Algorithm/Programmers

[프로그래머스] 멀쩡한 사각형 (Level 2)

by 잭피 2020. 11. 10.

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

 

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

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

programmers.co.kr


문제

가로 길이 W, 세로 길이 H가 주어지는데,

대각선 방향으로 잘랐을 때, 사용할 수 있는 정사각형 개수를 구하는 문제이다

(위 링크를 통해 그림참고)

해결

1차 함수로 풀었다

직사각형을 대각선으로 그으면,

y = (h / w) * x 방정식이 만들어진다

대각선이 있으면 카운트할 수 없다

x를 0부터 대입했을 때, y까지만 사용할 수 있는 정사각형이다

그 값을 구한 후 곱하기 2해주면 답이다 (아래 영역 + 위 영역)

class Solution {
    public long solution(int w, int h) {
        long answer = 0;
        for (int x=0; x<w; x++) {
            long y = ((long) h * x) / (long) w;
            answer+=y;
        }
        return answer*2;
    }
}

댓글