글쓰는쿼카의 PM 여정
⏳target 과 가장 가까운 두 원소의 합 구하기 (2024. 6. 9.) 본문
#스파르타코딩클럽 #내일배움캠프(프론트엔드_React)
#알고리즘 탐험반 #week3
학습일: 2024. 6. 9.(주일)
배운 내용 요약
1. 절대값 구하기 : Math.abs(a-b)
MDN 공식문서 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
let minusNumsSum = Math.abs(numsSum - target);
let minusAnswer = Math.abs(answer - target);
if (minusNumsSum < minusAnswer) {
answer = numsSum;
}
타켓(target)과 가까운 거리? (어떻게 구해야 되는 걸까🤔)
모든 컴퓨터 언어에는 절대값을 구하는 함수가 있다고 한다. 자바스크립트도 마찬가지!
- 두 원소의 합인 numsSum과 target과의 거리를 절대값 함수로 구한다 (그게 minusNumsSum)
- Infinity인 answer과 target과의 거리를 절대값 함수로 구한다 (그게 minusAnswer)
- 둘을 비교하는 if문을 만들고, 조건이 true일 경우 target과 가장 가까운 두 원소의 합이 answer가 되게 한다.
문제 2. target 과 가장 가까운 두 원소의 합 구하기
// 문제 정의:
// 주어진 정수 배열 nums에서 두 원소의 합이 특정 값 target에 가장 가까운 경우의 합을 반환하는 함수를 작성하세요.
// 정수 배열 nums와 정수 target이 주어집니다.
// 배열에서 두 원소의 합이 target에 가장 가까운 경우의 합을 반환합니다.
// 배열은 최소 두 개의 원소를 포함하고 있습니다.
// 다음의 조건을 만족해야 합니다:
// 가장 가까운 경우가 두가지 있을 경우, 작은 값을 반환합니다.
// while 문을 사용하여 구현합니다.
// 문제에서 '가장 가까운 경우의 합'을 구하는 것은 목표값 target과 가장 가까운 값을 찾는 것을 의미합니다.
// 따라서 합이 target과 정확히 같은 경우는 이 문제의 의도에 맞지 않습니다.
// 즉, 두 원소의 합이 target과 같은 경우는 제외됩니다
// 예시:
// closestSum([1, 2, 3, 4, 5], 7); // 6 (최대한 가까운 경우: 2 + 4 = 6)
// closestSum([-1, 2, 1, -4], 1); // 0 (최대한 가까운 경우: -1 + 1 = 0)
나의 답변 2)
- '두 원소의 합'을 구한다. (이중for문)
- '두 원소의 합'을 저장할 변수를 만들어 재할당 한다. (let numsSum = 0)
- 조건 1. numsSum과 target이 같지 않아야 한다.
- 조건 2. 가장 가까운 거리를 구해야 한다 - Math.abs(a-b), Infinity
- 조건 3. (만약 거리가 동일하다면) 둘 중 더 작은 수를 찾는다
function closestSum(nums, target) {
let numsSum = 0;
let answer = Infinity;
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
numsSum = nums[i] + nums[j];
if (numsSum === target) {
continue;
}
let minusNumsSum = Math.abs(numsSum - target);
let minusAnswer = Math.abs(answer - target);
if (minusNumsSum < minusAnswer) {
answer = numsSum;
}
if (minusNumsSum === minusAnswer && numsSum < answer) {
answer = numsSum;
}
}
}
return answer;
}
'개발 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
⏳재귀함수 (2024. 6. 10.) (0) | 2024.06.10 |
---|---|
⏳최소 요소 제거 게임(minimumNumberGame) (0) | 2024.06.04 |
⏳두 문자열 포함 여부 파악하기 (0) | 2024.05.28 |
⏳문자열에서 가장 많이 등장한 문자 찾기 (0) | 2024.05.26 |
⏳문자열 내 각 문자의 개수 반환 (0) | 2024.05.24 |