반응형
📌 문제 요약
프로그래머스의 "우박수열 정적분" 문제는 우박수열을 구성한 뒤, 정적분 값을 계산하는 문제입니다. 우박수열은 특정 수가 1이 될 때까지 홀수면 3배 + 1, 짝수면 2로 나누는 방식으로 계산합니다.
이 문제에서는 우박수열이 만들어내는 계단식 그래프 아래 넓이를 계산해야 합니다.
🧠 핵심 개념
- 우박수열 구하기
- 좌표 범위(ranges)마다 면적(정적분 값) 계산
- 삼각형이 아닌 사다리꼴의 넓이 공식 사용
💡 풀이 접근
- 우박수열을 배열로 구한다 (예: [k, ..., 1])
- range 배열을 순회하면서, 각 구간에 대해 넓이를 계산한다
- 넓이는 사다리꼴 넓이 공식:
(윗변 + 아랫변) / 2
- 시작 인덱스가 끝 인덱스보다 크면
-1
을 반환
💻 자바스크립트 풀이
function solution(k, ranges) {
// 우박수열 정적분 구하기
let arr = [k];
var answer = [];
// 1. 우박수열 만들기
while (k !== 1) {
k = k % 2 === 1 ? k * 3 + 1 : k / 2;
arr.push(k);
}
// 2. 정적분 계산
ranges.forEach(range => {
let x1 = range[0];
let x2 = arr.length - 1 + range[1]; // range[1]은 뒤에서부터 뺀 값
let integral = 0;
// x1이 x2보다 크면 잘못된 범위 → -1
if (x1 > x2) {
answer.push(-1);
return;
}
// 3. 사다리꼴 넓이 공식 사용
for (let i = x1; i < x2; i++) {
integral += (arr[i] + arr[i + 1]) / 2;
}
answer.push(integral);
});
return answer;
}
✅ 예제
solution(5, [[0,0],[0,-1],[2,-3]])
를 실행하면
우박수열 [5,16,8,4,2,1]에 대해 각각 정적분 구간의 넓이를 계산합니다.
📝 마무리
이 문제는 단순 구현처럼 보이지만, 정적분이라는 수학적 개념을 사다리꼴 넓이로 환산해서 계산해야 하기 때문에 꽤 흥미로운 문제였습니다.
평소 단순 수열 문제와는 다르게 시각적으로 사고하며 접근해보세요!
반응형
'프로그래머스 > Javascript' 카테고리의 다른 글
[코딩테스트 연습] 연습문제 / 짝수와 홀수, Javascript가 false로 보는 경우 (0) | 2021.12.14 |
---|
댓글