728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/134239
풀이
해당 문제는 정적분을 구해야 하는 문제인데 정적분 공식을 이용해 풀지 않고, 각 지점별 넓이를 구한 뒤 범위에 존재하는 영역의 넓이를 전부 더해 답을 도출한다.
간단한 구현 문제였다.
코드
function solution(k, ranges) {
const arr = [k];
const size = [];
const answer = [];
while (k > 1) {
if (k % 2 === 1) k = (k * 3) + 1;
else k /= 2;
arr.push(k)
}
for (let i = 0; i < arr.length - 1; i++) {
const prev = arr[i];
const next = arr[i + 1];
size.push(Math.min(prev, next) + Math.abs(prev - next) / 2);
}
for (let i = 0; i < ranges.length; i++) {
const [prev, next] = ranges[i];
const max = arr.length - 1 + next;
let areaSize = 0;
if (prev > max) {
answer.push('-1.0');
continue;
}
for (let j = prev; j < max; j++) {
areaSize += size[j];
}
answer.push(areaSize);
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 두 원 사이의 정수 쌍 (1) | 2024.07.26 |
---|---|
[JS] 과제 진행하기 (0) | 2024.07.25 |
[JS] 스티커 모으기(2) (1) | 2024.07.23 |
[JS] 프로그래머스_Level 2_N-Queen (2) | 2024.07.23 |
[JS] 프로그래머스_Level 3_ 기지국 설치 (0) | 2024.07.18 |