Conversation
hannut91
left a comment
There was a problem hiding this comment.
고생하셨습니다 ㅎㅎ 주간회고를 올려주세요!
problem-1/problem-1.test.js
Outdated
| return 0; | ||
| } | ||
|
|
||
| return numbers.reduce((acc, cur) => acc + cur, 0); |
There was a problem hiding this comment.
꼬리재귀는 reduce로 변환이 가능하다는 것을 이용해서 해결해 주셨네요.
reduce를 할 때 배열의 가장 앞의 요소를 초기값으로 사용하는 것을 reduce라고 하고, 기본값이 주어져서 원본 타입과 달라질 수 있는 것을 fold라고 구분하기도 합니다.
예를들어 코틀린에서는 메서드 자체를 fold와 reduce로 구분합니다.
자바스크립트에서는 초기값이 주어지면 fold, 주어지지 않으면 reduce로 동작합니다.
reduce는 배열의 가장 앞의 요소를 초기값으로 사용하니, 빈 배열이 주어질 경우 에러가 발생합니다.
반면에 fold는 기본값이 있으니 기본값을 그대로 반환합니다.
따라서 fold를 이용하면 빈 배열일 때도 기본값을 사용하도록 할 수 있어요.
const solution = (numbers) => numbers.reduce((acc, curr) => acc + curr, 0);주로 fold는 타입이 달라질 때 사용해요. 지금은 같은 타입인 숫자지만, 기본 값으로 아무거나 들어갈 수 있으니까요. 이 차이점을 알아두시면 좋을 것 같습니다.
There was a problem hiding this comment.
감사합니다!
빈 배열일 경우에 대한 예외 처리가 없어져서 코드가 더 간결해 졌네요 :-)
무엇보다 리뷰 기간이 지났는데 피드 포워드 작성해주셔서 너무 감사합니다 :-)
problem-4/problem-4.test.js
Outdated
| @@ -1,4 +1,13 @@ | |||
| const solution = () => { | |||
| const solution = (input = '') => { | |||
There was a problem hiding this comment.
기본값으로 빈 배열을 주신 것 같네요. 아무것도 주어지지 않은 경우 0이 나올 것 같은데, 어떤 의도인지는 알기 어려울 것 같아요. undefined가 주어져도 에러가 안날 수 있어서 오히려 입력이 주어지지 않으면 예외를 던지도록 해야될 수 있겠네요
There was a problem hiding this comment.
이 부분은 잘 이해가 안 가서 여러 번 읽어봤습니다 !
제가 작성한 코드는 올바른 2진수 문자열을 입력하지 않았을 경우 무조건 0을 반환하도록 구현되어 있는데,
오히려 올바른 값을 입력하지 않았을 경우 예외를 던지고, 올바른 값을 넣도록 유도하는 방법을 말씀하신 건가요?
There was a problem hiding this comment.
네 ㅎㅎ 사용하는 입장에서 오히려 모를 수가 있을 것 같아서 예외로 처리해도 될 것 같아요.
피드백 받을 수 있는 기간은 지났지만 문제 풀이해서 PR 올립니다!
이번 주 예상치 못한 일정이 생겨서 과제 소화를 못했네요.. 😂
해설 영상 참고해서 다른 풀이도 공부하고 주간 회고 작성하겠습니다.