JS/알고리즘(7)
-
배열 오름차순 정렬 하기 알고리즘 풀이 하기
getIndexToIns([10, 20, 30, 40, 50], 35) should return 3 문제는 위와 같이 35가 가져야 할 index 값을 반환해야 합니다. 35는 30보다는 크고 40보다는 작으므로 inxdex 3번째 자리에 와야 맞습니다. 초보자적인 제가 푼 코드입니다. 이 방법은 곧 너무 쓸데없이? 확인을 많이 한 것과 같다는 걸 알게 되었습니다. 일단 arr.sort((a,b)=> a-b);라는 오름차순 정렬 코드를 알아내고 적용하였습니다. 숫자가 랜덤 하게 적힐지도 모르니 먼저 배열에 있는 수자를 오름차순 정렬해줘야 합니다. 그 오름차순을 적용한 배열을 새로운 변수에 집어넣었습니다. 그리고 for 문을 이용하여 변수의 length 만큼 반복합니다. if에서 num 보다 indexar..
2021.07.11 -
code camp true의 첫번째 요소 반환하는 함수 알고리즘 풀이 (재귀, find, filter,for)
*문제는 배열을 살펴보고 첫 번째 요소인 ‘true test’를 통과하는 요소를 반환하는 함수를 생성합니다. 즉, x요소가 주어졌을 때 func(x)가 참이면 true test가 통과됩니다. 테스트에 통과한 요소가 없으면 undefined 상태로 반환합니다. *이 문제는 2로 나눈 나머지가 0인 숫자 중 무조건 처음에 나온 숫자가 return 되도록 해야 합니다. 왼쪽은 제가 푼 문제 이고 오른쪽은 힌트의 답입니다. 훠얼씬 깔끔한 거 같네요. 일단 코딩은 되는 것도 중요하겠지만 깔끔하고 보기 편하게 만드는 것도 중요한 것 같습니다.. 오른쪽을 기준으로 풀이를 해보면 arr에 배열이 func에는 num=>num % 2 ===0이라는 함수가 들어 있고 findElement에 선언되어 있는 num 은 0으로 ..
2021.07.06 -
codecamp 문제 하위 배열중 가장 큰 값 반환 하는 알고리즘 풀이(apply,bind,Math.max)
이 알고리즘에서 헷갈리는 Function.apply.bind()의 작동 과정.. 계속 보면 괜찮아지겠죠.. 위의 코드를 내가 이해한 대로 적어보면.. arr이의 배열을 map으로 새로운 배열을 만들어 return 할 것 배열의 형태를 인수로 받아 작업하기 위해 apply를 이용한다. 함수를 만들기 위해 bind를 사용. 1. [17,23,25,12] Math.max의 값으로 들어가 25가 되고 2. [25,7,34,48] Math.max의 값으로 들어가 48이 되고 3. [4,-10,18,21] Math.max의 값으로 들어가 21이 되고 4. [-72,-3,-17,-10] Math.max의 값으로 들어가 -3 이 되고 최종 적으로 배열에는 [25,48,21,-3] 이 되거 return 된다. *해설에서..
2021.07.03 -
code camp 문자열 중 가장 긴 단어 찾기 해결방법 풀이하기 (reduce,map,재귀)
1. reduce 사용 방법 function findLongestWordLength(s) { return s.split(' ') .reduce(function(longest, word) { return Math.max(longest, word.length) }, 0); } console.log(findLongestWordLength("See you later")) // 5 1. "See you later"를 findLongestWordLength의 매개변수 s에 제공됩니다. 2. s는 split 메서드를 이용해 ' ' 공백을 기준으로 문자열을 분할해서 배열에 넣은 다음 배열을 반환합니다. [결과] [ 'See', 'you', 'later' ] 됩니다. 그러면 가장 긴 문자열을 찾기 쉬워지겠죠.. 3. r..
2021.07.03 -
MDN에 나와 있는 map() 예제 작동 방법 공부하기 .. (1)
map()은 배열의 값을 이용해 수식을 진행하고 새 배열을 만듭니다. 그래서 특징 중에서 1. 기존의 배열에는 영향을 주지 않는다 2. map가 호출이 시작된 이후로 배열에 추가된 요소는 callbackFn에 의해 방문하지 않는다. 3. map호출 후 삭제된 요소는 방문하지 않는다. 라고 하는군요. numbers를 map()으로 호출하여 새로운 arr를 생성 1. num에 1이 들어오고 Math.sqrt(num)으로 1의 제곱근 1을 반환함 2. num에 4이 들어오고 Math.sqrt(num)으로 4의 제곱근 2를 반환함 3. num에 9이 들어오고 Math.sqrt(num)으로 9의 제곱근 3을 반환함 4. return[1 ,2 ,3] 이 roots의 배열이 됨. numbers 배열에 영향 없음. (..
2021.06.30 -
MDN에 나와 있는 reduce() 예제 작동 방법 공부하기 .. (2)
속성별 개체 그룹화 initialValue 값은 {} 이므로 acc의 값은 {}이다. obj는 0부터 시작. 1. key 변수에 obj[property] 즉 obj[age] 값을 넣으므로 21이 된다. if문에서 acc에 acc[key]가 없으니 [](방)을 만든다. 그리고 acc[key]만든 [] 안에 obj 자리에 있는 값 {name:'Alice', age:21}을 push 한다. 그러면 acc에는 '21'[{name:'Alice', age:21}] 값이 들어 있다. 2. key 변수에 obj[age]값 20을 할당한다. if 문에서 acc에 acc[key]가 없으니 [](방)을 만든다. 그리고 acc[key]만든 [] 안에 obj 자리에 있는 값{name:'max' , age:20}을 push 한다..
2021.06.29