알고리즘
[프로그래머스] 멀쩡한 사각형 - 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)으로 타입 변환 후 연산해야한다.