개발공부/코딩테스트 연습문제
[프로그래머스] Level.2 - 멀쩡한 사각형
ku-na
2022. 1. 18. 11:23
문제 설명과 제한사항

예시

풀이
class Solution {
public long solution(int w, int h) {
long answer = 0;
double width = w;
double height = h;
double tmp = 0;
for(int i=1; i<=w; i++) {
tmp = Math.floor(height - height/width*i);
answer += tmp;
}
return answer*2;
}
}
++
다른 직사각형도 그려보고 했지만 모르겠어서 고민하다 검색해서 풀이방법을 찾았다.
다양한 풀이 방법이 있었는데 기억에 남는건 첫번째는 최대공약수를 찾아 패턴을 찾는방법이었고
두번쨰는 저 대각선을 함수로 생각하고 y = h/w*x 형식으로 높이를 찾아 사용할 수 있는 정사각형의 갯수를 더하는 방법이었다.. 보고 뒤통수가 얼얼했다.

이런식으로 y = 12/8*x 의 그래프를 만든것이다.
저런 부류의 다양한 방식이 있었다. 신기하고 좋은 풀이 였다.
+++
class Solution {
public long solution(int w, int h) {
long answer = 0;
for(int i=1; i<w; i++) {
answer += (long)h*(long)i/(long)w;
}
return answer*2;
}
}
이렇게도 가능하다..
원래 이게 처음 풀이였는데 같은 테스트가 계속 실패했고, 실행시간이 길었던 걸로 보아 큰 값이 테스트에 있어 int 형으로 쓰레기값이 들어갔나보다. 혹시나 해서 전부 형변환 하니까 테스트 성공했다..