
const isSubsequence = function (arr1, arr2) {
const ab = {};
const ac = {};
for (var word in arr1) {
ab[word] = arr1[word];
}
//ab 객체에 in 을 사용해서 keu- value 를 같이 주었다.
for (var worc in arr2) {
ac[worc] = arr2[worc];
}
//ac 에 key-value 준거
var point_f = 0;
var point_s = 0;
while (point_s < arr2.length) {
if (ab[point_f] != ac[point_s]) {
++point_s;
}
else if (ab[point_f] == ac[point_s]) {
delete ab[point_f];
++point_f;
}
}
//내가 짠 코드인데 기억이 안나네 칙쇼 ;ㅋㅋㅋ
// 기준을 ab 로 하고 ab value와 ac value 가 같으면
// ab안에 있는 key- value 자체를 지운다.
// 여기서 기준은 ac- point_s 와 연관되어있다는것이고
if (Object.keys(ab).length === 0) {
return true;
}
else {
return false;
}
}
//길이가 0 이면 true 를 반환하는 문제
console.log(isSubsequence('hello', 'hello world'));
console.log(isSubsequence('sing', 'sting'));
console.log(isSubsequence('abc', 'abracadabra'));
console.log(isSubsequence('abc', 'acb'));

-연속된 수 중에서 가장 큰 수를 찾아서 반환하거라 라는 문제이다.
const maxSubarraySum = function (arr1, point) {
var point_f = 0;
var point_ff = point;
var original = 0;
if (arr1.length < point) {
return null;
}
for (var i = 0; i < point; i++) {
original += arr1[i];
}
//보니까 마지막에 arr1 에 담은 것을 배출해라 이런거 같음
var max = original;
// 전체를 for 문을 돌려서 가는게 아니고 선생님이 알려준 방식을 사용하는데
기존에 있던 것을 불러와서 비교할려고 하니 안되서 하나의 변수가 original 의값을 복사하는 식으로 하였다.
while (point_f < arr1.length - 1) {
original = original + arr1[point_ff] - arr1[point_f];
if (max < original) {
max = original;
}
++point_f;
++point_ff
}
return max;
}

console.log(maxSubarraySum([100, 200, 300, 400], 2));
console.log(maxSubarraySum([1, 4, 2, 10, 23, 3, 1, 0, 20], 4));
console.log(maxSubarraySum([-3, 4, 0, -2, 6, -1], 2));
console.log(maxSubarraySum([3, -2, 7, -4, 1, -1, 4, -2, 1], 2));
console.log(maxSubarraySum([2, 3], 3));
문제 해석 배열안에 있는 것을 더해서 두번째 매개변수가 되거나 더 큰수가 되야되는데 이런 경우 배열안에 있는 몇개의 수를 사용해야 되는가? 에 대한 문제
contiguous-> 연속한 ->
const minSubArrayLen = function (arr1, point) {
var sum = 0;
var point_f = 0; //이 친구가 움직이는걸로 하구;
var number = 1; //몇개씩 잡아야 되겟냐?
var i = 0;
//for 문으로 돌릴려고 했는데 안돌아가서 하나씩 증가하면서 while 문을
빠져나가는 것을 사용하니 됬다 .
// 1나만 나오는 경우를 만든것이다.
while (i < arr1.length - 1) {
++i;
if (arr1[i] > point) {
return 1;
}
}
//main 함수 - > 여기가 중요하다.
while (sum < point) {
//sum-> 즉 수가 커지면 while 문을 빠져 나가는 식으로 한거
//어쩌피 하나로는 가능 하지 않다는 것을 발견했으니 배열 index 가 1 인거
부터 하나씩 더해나가 볼까?->지금보니까 number가 움직이는 식이네
sum += arr1[number + point_f] + arr1[point_f];
if (sum >= point) {
break;
}
++number;
//이동 하는 number가 끝까지 갓으면 다시 초기화를 시키고 point_f 의 수를
하나증가시켜서 이동시키는 것 처럼 하자
if (number > arr1.length - 1) {
++point_f;
number = 1;
sum = 0;
return 0;
}
}
return number;
}

console.log(minSubArrayLen([2, 3, 1, 2, 4, 3], 7))
console.log(minSubArrayLen([2, 1, 6, 5, 4], 9))
console.log(minSubArrayLen([3, 1, 7, 11, 2, 9, 8, 21, 62, 33, 19], 52))
console.log(minSubArrayLen([1, 4, 16, 22, 5, 7, 8, 9, 10], 39))
console.log(minSubArrayLen([1, 4, 16, 22, 5, 7, 8, 9, 10], 55))
console.log(minSubArrayLen([4, 3, 3, 8, 1, 2, 3], 11));
console.log(minSubArrayLen([1, 4, 16, 22, 5, 7, 8, 9, 10], 95))




// fib(4) // 3
// fib(10) // 55
// fib(28) // 317811
// fib(35) // 9227465
var list=[];
const arr_list_v=function(a)
{
const fib_v= function(ap){
if (ap==0||ap==1)
{ list[ap]=1 ;
return 1;}
if(list.length!=a){
list[ap]=fib_v(ap-1)+fib_v(ap-2)
};
return fib_v(ap-1)+fib_v(ap-2);
}
var nmm=a-1;
console.log(fib_v(nmm) );
}
arr_list_v(4);
arr_list_v(10);
arr_list_v(28);
arr_list_v(35);
**여기 부분 열심히 했는데 max size 가 왜 되는지 모르겠다.. 아무래도 나중에 다시 봐야될거같다.
**