250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
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 31
Archives
Today
Total
관리 메뉴

devlog_owen

231019) TIL #3 reduce, map, fnGCD 개념정리 본문

TIL

231019) TIL #3 reduce, map, fnGCD 개념정리

developer_owen 2023. 10. 19. 19:19
728x90

오늘 알고리즘 문제 풀고 새삼 나의 무지함,무능함을 느꼈다. 입문용 문제였는데...

게다가 개인 프로젝트 과제도 완전 난항을 겪고 있어서 이 내용도 꼭 다음 TIL에 적고 말겠다.

 

1)reduce 함수

 

JS에서 제공하는 내장함수 중 하나. 배열에 대한 요소의 누산작업을 실시하고 그 결과를 반환함. 

arr.reduce(callback(accumulator, currentValue, index, array), initialValue)

이것이 일반적인 구문이란다. 

 

function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}

위는 오늘 내가 틀린 문제의 해답. 문제는 무작위 배열의 원소에 각각 *2하는 것.

accumulator는 각 단계에서 현재까지 누산 결과를 나타냄.

... accumulator는 accumulator 배열의 모든 요소를 복사한 거임.

currentValue는 현재 처리중인 배열 요소의 값임. 

currentValue*2는 현재 값을 두 배한거임.

[ ]은 초기값임. 초기값이 없으므로 배열의 첫 번째 요소가 초기값이 된다. 예를 들어 배열이 [1,2,3]이다. 그럼 [1],[1,2],//[1,2,3]으로 최종결과가 나옴.

 

 

2) map 함수

 

JS에서 제공하는 내장 함수 중 하나. 배열의 각 요소에 대해 주어진 함수 실행 후 새로운 배열 생성함.

 

const arr = [1, 2, 3, 4, 5];
const doubledArr = arr.map(item => item * 2);

console.log(doubledArr);

오늘 내가 틀린 문제. 일반예문은 이렇다.

arr.map(callback(currentValue[, index[, array]])[, thisArg])

map 함수는 반복 작업을 단순화 시킬 수 있다. 위의 틀린 문제도 for문으로 반복문으로도 구현 가능했는데 map함수를 이용하는 것이 더 간단한 코드인것같다. 특히 map 함수는 각요소에 동일한 연산을 적용할 때 유용함

 

3)fnGCD  함수

 

두 정수 A,B의 최대공약수 GCD를 재귀적으로 계산하는 함수.

function fnGCD(a, b){
    return (a%b)? fnGCD(b, a%b) : b;
}

다음은 역시 내가 틀린 코드의 일부분이다. 기약분수를 더하는 과정에서 최대공약수로 나누는 방법을 몰랐다.

설명하자면 A,B를 인수로 받고 일단 A%B를 계산한다. 만약 나누어 떨어진다면 B가 최대 공약수임.

그러나 나누어 떨어지지 않으면 이번에는 A에 B를 넣고 B에 A%B를 대입해 반복해서 최대공약수를 찾는다.

 

function fnGCD(a, b){
    return (a%b)? fnGCD(b, a%b) : b;
}

function solution(denum1, num1, denum2, num2) {
    let denum = denum1*num2 + denum2*num1;
    let num = num1 * num2;
    let gcd = fnGCD(denum, num); //최대공약수

    return [denum/gcd, num/gcd];
}

사실 저 재귀적 어쩌고 저 원리는 모르겠는데 왠지 초등학교때 배운거같은 느낌이다. 걍 외우는 걸로.

728x90

'TIL' 카테고리의 다른 글

231024 TIL) reduce, 올림, 내림, 반올림 수학함수  (0) 2023.10.24
231021) TIL #5 FETCH, FILTER  (0) 2023.10.21
231020) TIL #4 DOM  (0) 2023.10.20
231018) TIL #2 연산자 정리  (0) 2023.10.18
231017) TIL #1 변수개념 정리  (0) 2023.10.18