1. 문제
programmers.co.kr/learn/courses/30/lessons/62048?language=javascript
2. 접근 방법
처음에 일차함수로 접근해서, 아래쪽 부분만 다 더해주고 *2로 해줬다.
근데 이렇게 할 경우 테스트 6번 빼고 모두 통과한다.
6번이 왜 안되는지 확인해봤더니, 기울기 값이 오차범위 때문에 일부 값이 손실되어서 반환 값이 다르게 나온다고 한다.
ㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠ
그래서 w, h 중 더 작은 수를 a에 넣고 더 큰 수를 b에 넣고 확인해보니까
기울기를 (더 작은 수 / 더 큰 수)로 하면 해당 오류가 나타나지 않았다.
(더 큰 수 / 더 작은 수)로 하면 6번 케이스 통과 못 함 !
3. 코드
Javascript
function solution(w, h) {
var answer = 0;
const [a, b] = [Math.min(w, h), Math.max(w, h)]
for (let i=1; i<b; i++) {
answer += Math.floor((a / b) * i)
}
return answer*2;
}
4. 마치며
이상함다 ! 흥
'Algorithm > JavaScript' 카테고리의 다른 글
[프로그래머스] 프린터 (0) | 2021.05.08 |
---|---|
[프로그래머스] 오픈채팅방 (0) | 2021.05.08 |
[프로그래머스] 문자열 압축 (0) | 2021.05.07 |
[프로그래머스] 기능개발 (0) | 2021.05.07 |
[프로그래머스] 짝수와 홀수 (0) | 2021.05.07 |