Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dsa-week1-assignment-1: 김승우 #7

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

kyh196201
Copy link

피드백 받을 수 있는 기간은 지났지만 문제 풀이해서 PR 올립니다!

이번 주 예상치 못한 일정이 생겨서 과제 소화를 못했네요.. 😂

해설 영상 참고해서 다른 풀이도 공부하고 주간 회고 작성하겠습니다.

Copy link
Contributor

@hannut91 hannut91 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 ㅎㅎ 주간회고를 올려주세요!

return 0;
}

return numbers.reduce((acc, cur) => acc + cur, 0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

꼬리재귀는 reduce로 변환이 가능하다는 것을 이용해서 해결해 주셨네요.

reduce를 할 때 배열의 가장 앞의 요소를 초기값으로 사용하는 것을 reduce라고 하고, 기본값이 주어져서 원본 타입과 달라질 수 있는 것을 fold라고 구분하기도 합니다.

예를들어 코틀린에서는 메서드 자체를 fold와 reduce로 구분합니다.

자바스크립트에서는 초기값이 주어지면 fold, 주어지지 않으면 reduce로 동작합니다.

reduce는 배열의 가장 앞의 요소를 초기값으로 사용하니, 빈 배열이 주어질 경우 에러가 발생합니다.
반면에 fold는 기본값이 있으니 기본값을 그대로 반환합니다.

따라서 fold를 이용하면 빈 배열일 때도 기본값을 사용하도록 할 수 있어요.

const solution = (numbers) => numbers.reduce((acc, curr) => acc + curr, 0);

주로 fold는 타입이 달라질 때 사용해요. 지금은 같은 타입인 숫자지만, 기본 값으로 아무거나 들어갈 수 있으니까요. 이 차이점을 알아두시면 좋을 것 같습니다.

Copy link
Author

@kyh196201 kyh196201 Sep 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다!
빈 배열일 경우에 대한 예외 처리가 없어져서 코드가 더 간결해 졌네요 :-)

무엇보다 리뷰 기간이 지났는데 피드 포워드 작성해주셔서 너무 감사합니다 :-)

@@ -1,4 +1,13 @@
const solution = () => {
const solution = (input = '') => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기본값으로 빈 배열을 주신 것 같네요. 아무것도 주어지지 않은 경우 0이 나올 것 같은데, 어떤 의도인지는 알기 어려울 것 같아요. undefined가 주어져도 에러가 안날 수 있어서 오히려 입력이 주어지지 않으면 예외를 던지도록 해야될 수 있겠네요

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 잘 이해가 안 가서 여러 번 읽어봤습니다 !

제가 작성한 코드는 올바른 2진수 문자열을 입력하지 않았을 경우 무조건 0을 반환하도록 구현되어 있는데,
오히려 올바른 값을 입력하지 않았을 경우 예외를 던지고, 올바른 값을 넣도록 유도하는 방법을 말씀하신 건가요?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 ㅎㅎ 사용하는 입장에서 오히려 모를 수가 있을 것 같아서 예외로 처리해도 될 것 같아요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants