Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 배열의 내림차순
- 배열과 연결리스트의 차이
- 고차함수
- for..of
- 객체
- 범용 선택자
- invalid assignment left-hand side
- 일반 형제 선택자 결합
- 가상 요소 선택자
- Em
- Link
- 쌍방향 연결리스트
- 단방향 연결리스트
- 양방향 연결리스트
- CSS
- Sort
- 백준알고리즘
- 인접 형제 선택자 결합
- innerhtml
- disabled
- filter()
- 배열의 오름차순
- display : none
- map()
- Array.from()
- indexOf
- classList.contains(string)
- nth-child()
- 등차수열의 항 찾기
- visibility : hidden
Archives
- Today
- Total
프론트엔드 센트럴파크 (☞゚ヮ゚)☞
두 수 최대 합 본문
수열이 주어질 때 두개의 수를 선택하여 최대 합이 나올 수 있도록 하여라.
[-11, 5, 18, -2, -3, 6, 4, 17, 10, 9],
[3, 7, -14, 2, -6, 13, -20, -2, -7, 6, -17, -5, 14, -9, 19],
[-15, -4, -8, 12, 12, -8, -8, 9, 10, 15, -2, 10, -14, 2, 13, 19, -9, 3, -18, 14]
정답1
function answer(nums) {
let result = [];
let arr = nums.sort((a,b) => b - a);
// console.log(arr);
let i = 0;
for(let i=0; i < 2; i++) {
result[i] = arr[i];
}
return result;
}
let input = [
[-11, 5, 18, -2, -3, 6, 4, 17, 10, 9],
[3, 7, -14, 2, -6, 13, -20, -2, -7, 6, -17, -5, 14, -9, 19],
[
-15, -4, -8, 12, 12, -8, -8, 9, 10, 15, -2, 10, -14, 2, 13, 19, -9, 3, -18,
14,
],
];
for (let i = 0; i < input.length; i++) {
process.stdout.write(`#${i + 1} `);
console.log(answer(input[i]));
}
정답2
function answer(nums) {
let result = [];
result = nums[0] > nums[1] ? [nums[0], nums[1]] : [nums[1], nums[0]];
for (let i = 2; i < nums.length; i++) {
if (nums[i] > result[0]) {
result[1] = result[0];
result[0] = nums[i];
} else if (nums[i] > result[1]) {
result[1] = nums[i];
}
}
return result;
}
let input = [
[-11, 5, 18, -2, -3, 6, 4, 17, 10, 9],
[3, 7, -14, 2, -6, 13, -20, -2, -7, 6, -17, -5, 14, -9, 19],
[
-15, -4, -8, 12, 12, -8, -8, 9, 10, 15, -2, 10, -14, 2, 13, 19, -9, 3, -18,
14,
],
];
for (let i = 0; i < input.length; i++) {
process.stdout.write(`#${i + 1} `);
console.log(answer(input[i]));
}
result = nums[0] > nums[1] ? [nums[0], nums[1]] : [nums[1], nums[0]];
nums의 0번째와 1번째의 위치를 고정시키기 위해서 idx 0이 1보다 크면 [nums[0], nums[1]] 이고 아니면 [nums[1], nums[0]]로 위치를 바꾸어라
for (let i = 2; i < nums.length; i++) {
if (nums[i] > result[0]) {
result[1] = result[0]; // value shift
result[0] = nums[i];
} else if (nums[i] > result[1]) {
result[1] = nums[i];
}
}
함수를 실행하게 되면 제일 먼저 nums[0] 과 nums[1]을 비교하여 임의로 숫자를 넣어 놓고 이제 배열 안의 숫자비교를 통하여 숫자를 result에 넣는다.
: nums[i]가 result[0]보다 크면 result[0]은 result[1]자리로 한칸 물러나게 된다.
그리고 다시 반복되는 수와 비교하게 된다.
'Algorism' 카테고리의 다른 글
나무 그리기 (0) | 2022.07.22 |
---|---|
배열의 element들의 값이 많을 때, 정해진 합 구하기 (0) | 2022.07.22 |
길이가 동일한 배열의 값 빼기 (0) | 2022.07.21 |
수열 최솟값 위치 구하기 (0) | 2022.07.20 |
약수 구하기 (0) | 2022.07.18 |
Comments