반응형
한달동안 사용한 법인카드 금액 건들 중에서 10만원의 조합을 만들고자 각 건별 금액을 제시하고
조합을 만들어 달라고 챗GPT에게 요청을 했더니 순식간에 뽑아주었다.
"너 어떻게 계산했니?"
라고 물어보니 아래와 같은 함수식을 제공해주었다.
다음 달에도 사용 해야 하므로 우선 포스팅 자료를 남겨두고
다음 달에 실제 로직을 직접 돌려 확인해 볼 생각이다.
function findCombinations(numbers, target = 100000, tolerance = 100) {
const results = [];
const isWithinTolerance = (sum) =>
sum >= (target - tolerance) && sum <= (target + tolerance);
const combine = (startIndex, combo) => {
const sum = combo.reduce((acc, val) => acc + val, 0);
if (isWithinTolerance(sum)) {
results.push({ combo: [...combo], sum });
}
if (sum > target + tolerance) return; // 가지치기
for (let i = startIndex; i < numbers.length; i++) {
combo.push(numbers[i]);
combine(i + 1, combo);
combo.pop();
}
};
combine(0, []);
return results;
}
// 사용 예시
const values = [15300, 23800, 12000, 17300, 28300, 20700, 30000,
12000, 44300, 17700, 7250, 7200, 3800, 20000,
6900, 9050, 4300];
const validCombinations = findCombinations(values);
console.log(validCombinations.slice(0, 5)); // 상위 5개 조합 출력
이 함수식에 대한 챗GPT의 부가 설명은 다음과 같다.
- combine 함수는 백트래킹 방식으로 모든 조합을 탐색합니다.
- isWithinTolerance는 목표 합 ±100 범위에 있는지를 확인합니다.
- 너무 큰 합이 나오면 더 깊은 재귀는 하지 않도록 가지치기를 합니다.
이젠 정말 중요한 수학적 계산을 챗GPT를 활용하는 것이 바람직해보인다.
그럼 개발자는 무엇을 해야하는걸까?
충분한 고민이 필요한 시점이다.
반응형
'프로그래밍 > react' 카테고리의 다른 글
react - 개념 (0) | 2025.07.07 |
---|---|
[Javascript] iPad|Andorid|iPhone User-Agent확인 및 구분 (0) | 2023.03.29 |