기울기 * x를 올림한 수
- 기울기 * (x - 1)을 버림한 수
h / w
function solution(w, h) {
const [big, small] = [Math.max(w, h), Math.min(w, h)];
let cnt = 0;
for (let i = 1; i <= small; ++i) {
cnt += Math.ceil((big * i) / small) - Math.floor((big * (i - 1)) / small);
}
return w * h - cnt;
}
처음에 그림 그려가면서 최대공약수로 나름 규칙을 찾았었는데, 최대공약수가 1인 경우에는 규칙이 잘 먹히지 않았다.
사람들의 힌트를 봐도 잘 이해가 안 되다가 다시 그림 그리면서 보니까 기울기 방법이 갑자기 이해가 됐다.
(3, 5) 같은 경우를 그림 그리면서 해보는 걸 추천!
또 원래 기울기를 먼저 구해두고 값을 누적했는데, 테케 3개인가 통과를 못해서 찾아봤더니 나누기 연산 시에 소수점 이하 값이 정확하지 않아서 문제가 생기는 사람들이 많았다. 다른 사람 답을 참고해서 나누기를 나중에 수행했더니 통과가 돼서 이건 좀 어이가 없었다...
6월부터 프로그래머스 자바스크립트 문제를 레벨 0부터 차근차근 풀기 시작해서 드디어 오늘 1000위 안으로 들어왔다! 😁