일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- KDT 프로그래머스
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 데브코스 프론트엔드 TIL
- react 프로젝트 리팩토링
- 투포인터알고리즘 js
- Vue3 Router
- frontend roadmap study
- 모던 javascript Deep Dive
- react customHook 예시
- TypeScript 문법 소개
- 개발자 특강
- 프로그래머스 K_Digital Training
- 우테캠 회고록
- 리팩토링 회고
- 머쓱이
- 인프런 자바스크립트 알고리즘 문제풀이
- Vue3
- 모던 자바스크립트 Deep Dive
- 프로그래머스 데브코스
- 프로그래머스 데브코스 프론트엔드
- useEffect return
- 모던 자바스크립트 TIL
- 모던 자바스크립트 딥다이브
- useRef 지역 변수
- KDT 프로그래머스 데브코스 프론트엔드
- Frontend Roadmap
- 백준 node.js
- K_Digital Training
- 백준 js
- 프로그래머스 K_Digital Training 프론트엔드
- Today
- Total
프론트엔드 개발자의 기록 공간
[프로그래머스 JavaScript] 내적 본문
프로그래머스 Level1 내적 문제
문제 풀이 : 따로 설명할 것도 없이 매우 간단한 문제이다.
흔히 알고있는 for문으로 해결했다가 다른 문제풀이를 보았는데
reduce 함수를 이용하여 푼 풀이를 보고 처음으로 reduce함수에 대해 공부해보았다.
시간복잡도는 O(n)을 가진다.
MDN Web Docs문서에 따르면 "reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다." 라고 정의 되어있다.
리듀서 함수는 네 개의 인자를 가집니다.
- 누산기accumulator (acc)
- 현재 값 (cur)
- 현재 인덱스 (idx)
- 원본 배열 (src)
리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 됩니다.
즉, 배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값); 의 형태로 사용이 된다.
(더 자세한 설명은 MDN Web Docs 문서 참고)
이것을 여기 문제에 적용하여
a 배열에 대해 리듀서 함수를 실행하고 누적값, 현재값, 인덱스를 활용한다.
acc += cur * b[idx]를 통해 누적값에 a의 현재값과 b의 값을 연산 후, 누적값 acc에 반환을 해준다.
마지막 인덱스 값으로 0을 주어 초깃값을 준 것을 볼 수 있다.
(초깃값 지정을 안할시 배열의 첫번째 값이 초깃값으로 지정이 된다.)
*한줄평 : 정처기와 중간고사 준비로 한 동안 손 놓았던 코테 문제를 다시 시작했다.
백준으로 입력값을 귀찮게 하나씩 처리하다가 프로그래머스로 넘어오니깐 입출력 처리에서 매우 편하다...
+ JS 문법좀 다져야겠다....
'알고리즘_JS > 프로그래머스_Level1' 카테고리의 다른 글
[프로그래머스 JavaScript] 모의고사 (0) | 2021.05.22 |
---|---|
[프로그래머스 JavaScript] K번째수 (0) | 2021.05.22 |
[프로그래머스 JavaScript] 완주하지 못한 선수 (0) | 2021.05.20 |
[프로그래머스 JavaScript] 신규 아이디 추천 (0) | 2021.05.17 |
[프로그래머스 JavaScript] 소수 만들기 (0) | 2021.05.08 |