프론트엔드 개발자의 기록 공간

[프로그래머스 JavaScript] 내적 본문

알고리즘_JS/프로그래머스_Level1

[프로그래머스 JavaScript] 내적

[리우] 2021. 5. 8. 01:03

프로그래머스 Level1 내적 문제

 

 

문제 풀이 :  따로 설명할 것도 없이 매우 간단한 문제이다.

흔히 알고있는 for문으로 해결했다가 다른 문제풀이를 보았는데

reduce 함수를 이용하여 푼 풀이를 보고 처음으로 reduce함수에 대해 공부해보았다.

시간복잡도는 O(n)을 가진다.

 

 

MDN Web Docs문서에 따르면 "reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다." 라고 정의 되어있다.

 

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

  1. 누산기accumulator (acc)
  2. 현재 값 (cur)
  3. 현재 인덱스 (idx)
  4. 원본 배열 (src)

리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 됩니다.

즉, 배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값); 의 형태로 사용이 된다.

(더 자세한 설명은 MDN Web Docs 문서 참고)

 

이것을 여기 문제에 적용하여 

a 배열에 대해 리듀서 함수를 실행하고 누적값, 현재값, 인덱스를 활용한다.

acc += cur * b[idx]를 통해 누적값에 a의 현재값과 b의 값을 연산 후, 누적값 acc에 반환을 해준다.

마지막 인덱스 값으로 0을 주어 초깃값을 준 것을 볼 수 있다.

(초깃값 지정을 안할시 배열의 첫번째 값이 초깃값으로 지정이 된다.)

 

*한줄평 : 정처기와 중간고사 준비로 한 동안 손 놓았던 코테 문제를 다시 시작했다.

백준으로 입력값을 귀찮게 하나씩 처리하다가 프로그래머스로 넘어오니깐 입출력 처리에서 매우 편하다...

+ JS 문법좀 다져야겠다....

728x90
Comments