CodeKata 01.

서동이·2021년 3월 31일
0

CodeKata

목록 보기
2/5
post-thumbnail

문제
twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면,
더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열
예를 들어,
nums은 [4, 9, 11, 14]
target은 13
nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.
#가정
target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.

  1. 나와 짝꿍이 제출한 답안

  1. 오늘 배운것: forEach, map, reduce의 차이점
    :: forEach, map, reduce 셋 모두 배열을 이용한다는 점과
    배열의 값을 조작해서 원하는 결과값을 도출하는데 사용된다는 공통점이 있다.
    차이점은 다음과 같다.

2-1 array.forEach()

arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])
  • callback: 각 요소에 대해 실행할 함수
  • currentValue[]: 현재 처리할 요소
  • index[]: 현재 처리할 요소의 인덱스
  • array: forEach()를 호출한 배열
  • thisArg: callback을 실행할 떄 this로 사용할 값.

2-2. map
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환

var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
  return num * 2;
});
// doubles는 이제 [2, 8, 18]
// numbers는 그대로 [1, 4, 9]

2-3. reduce
reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

리듀서 함수는 네 개의 인자를 가진다.

  • 누산기accumulator (acc)
  • 현재 값 (cur)
  • 현재 인덱스 (idx)
  • 원본 배열 (src)
    => 리듀서 함수의 반환 값은 누산기에 할당되고,
    누산기는 순회 중 유지되므로
    결국 최종 결과는 하나의 값이 된다.
const array1 = ['a', 'b', 'c'];

array1.forEach(element => console.log(element));

// expected output: "a"
// expected output: "b"
// expected output: "c"

참고

  1. 느낀점
    Driver 와 Navigator로 역할을 나누어서 코드카타를 진행했는데,,
    이미 알고 있는 방법인데도 어디에 어떻게 응용해야하는지 익숙하지 않고 거기다 forEach,,휴,,자바스크립트,, 서형님 우리 힘내요 ㅜ
profile
오늘도 여전히 사고친걸 해결해본당,,

0개의 댓글