처음보는 신선한 문제였다. 얼만큼의 영역을 못쓰게 되는지 어떻게 판단해야하는지 고민을 많이 했는데, 좌표 위 그래프로 생각하면 쉽게 풀 수 있다.
위 그림처럼 좌우 반전 시킨 후 보면, 그래프처럼 보인다.
이렇게 생각하면, 각각 더한 후 2배를 해주면 영역의 넓이가 나온다!
코드로 작성하면 다음과 같다. 풀고나니 너무 간단해서 힘빠졌던 문제,,
public class Solution {
public long solution(long w, long h) {
long answer = 0;
for (int i = 0; i < w; i++) {
// answer += h / w * i; // 이렇게하면 틀림
answer += h * i / w;
}
return answer * 2;
}
}
난이도 : LEVEL 2
딱히 없음