알고리즘

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

minkang 2021. 7. 2. 13:34

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 = 0;
		for (int i = 1; i < w; i++) {
			answer += ((long)h * i) / w;
		}
		return answer * 2;
	}
}

생소한 문제 유형으로 어떻게 접근해야 할지 잘 몰랐다.

이 문제는 1차 함수 문제였다.

y = h / w * x 식을 이용해서

밑에 직각 삼각형의 갯수를 먼저 구한다음 * 2를 하면 된다.

오른쪽부터 자세히보면

w가 1일때 h는 1.xxx로 1개

w가 2일때 h는 3.xxx로 3개

for(i=1 -> i<w) 

'직각삼각형의 총 갯수' += h * i / w 이다.

그 다음 '직각삼각형의 총 갯수' *2를 하면 된다.

여기서 주의할 점은 h * i에서 int의 범위를 벗어나기 때문에 (long)으로 타입 변환 후 연산해야한다.