본문 바로가기

Coding Test/Programmers

[프로그래머스 코딩테스트JavaScript] Level1-2. 평균 구하기

반응형

[프로그래머스 코딩테스트JavaScript Level 1] 평균 구하기

 

 

 

 

forEach 구문을 써서 arr 배열안의 원소 (ele) 를 += 계속 더해서 answer 변수 안에 넣고 arr.length로 나눴다.

 

맞은게 신기하다..... 

 

 

 

 

 

 

 

 

다른 사람들의 풀이를 보는데 진짜 다양하다. 똑같은 문제인데 다양한 풀이가 있어서 뭔가 더 재밌ㄴ다 

 

 

reduce를 사용한 다른 사람 코드 

reduce 예전에 배웠는데 지금 기억이 가물가물치

 

 

 

다시 찾아보니 .reduce() Method 는 4개의 매개 변수 parameters를 가진다. 

축적값(acc) , 현재 값(curr), 현재 인덱스(index), 원본 배열(arr) 

  

축적값 accumulator = acc

현재값 current value 인 것 같다

 

다시 저 코드를 보니 매개변수 (a,b)는 acc, curr 로 쓰인 것 같다. a는 축적되는 값, b는 현재 값 (배열의 각각의 값을 forEach처럼 주는 듯 ) 

 

 

연습

const array = [100,200,300,400];

const sum = array.reduce((acc,curr)=>{
    return acc + curr;
})

console.log(sum); 

.reduce() Method  =  배열의 각 요소에 주어진 reducer 함수를 실행하고 하나의 결과값을 반환 

forEach처럼 각 요소를 for 돌리는.. 

처음 -> acc = 비어있음 + curr 100 ==> return 100    -> 틀림 아래 설명 

두번째-> acc = 100  + curr 200 ==> return 300

세번째-> acc= 300 + curr 300 ==> return 600

네번째-> acc= 600 + curr 400 ==> return 1000

값 -> 1000 return 

 

 

그럼 index와 array 부분 은 언제쓰지? 

 

const array = [100,200,300,400];

const sum = array.reduce((a,b,c)=>{
    console.log( a + b);
    console.log(c)
    return a+b;
})

console.log(sum); 

 

 

 

const array = [100,200,300,400];

const sum = array.reduce((a,b,c)=>{
    console.log(c)
    console.log(a+'+'+b+'='+ (a + b));

    return a+b;
})

console.log(sum); 

 

첫번째 돌릴 때 acc 변수값에 아무것도 없어서 첫번째 요소 100을 넣는구나를  알 수 있음..

즉, 

첫번쨰 -> acc=100 + curr 200 = return 300

두번쨰 -> acc=300 + curr 300 = return 600

세번쨰 -> acc=600 + curr 400 = return 1000

 

배열 요소 4개일 때 축적값 없음으로 3번 for 돌아감 

 

 

reduce공부하고 다시 평균구하기 문제를 보고 풀어보기 

function solution(arr) {
    let a = arr.reduce((a,b)=>{
        return a+b
    })
    return a/arr.length;
}

 

 

=>{ } 안에 return 이 없어야 {} 제거가 가능 

function solution(arr) {
    return arr.reduce((a,b)=>a+b)/arr.length;
}

 

 

 

 

=========================================================================

 

질문

reduce ((acc,curr) => {} 에서 acc, curr 이름은 아무거나 써도 되는지? 자리는 4개인데 두개만 쓰면 어떤건지 어떻게 아는지 

 

 

된다

const array = [100,200,300,400];

const sum = array.reduce((a,b)=>{
    return a + b;
})

console.log(sum); 

 

 

 

반응형