Skip to content

[김한기] Week 3 solutions #82

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

Merged
merged 1 commit into from
May 19, 2024
Merged

[김한기] Week 3 solutions #82

merged 1 commit into from
May 19, 2024

Conversation

meoooh
Copy link
Contributor

@meoooh meoooh commented May 18, 2024

지각이네요 ^^;

그리고 마지막 문제는 풀지 못했습니다 ㅠㅠ

이번주에도 엘릭서로 풀었는데

약간의 특이사항은 이번주 문제에 두개의 트리가 동일한지 비교하는 문제가 두개 나왔는데,

엘릭서는 함수형 언어이고, 모든 객체(?)가 한번만들어지면 불변이므로, 무언가를 비교할때 모든건 불변한다는걸 이용해서 그 값을 비교한다는 특징이 있고... 이때문에 문제가 너무나도 쉽게 풀릴 수 있었네요.

예를들어 same tree 문제는 p == q 이렇게만 해도 같은지 비교가 가능한...

(최소한 루비 기준에선)다른 언어에선 두 객체가 있고, Object.new == Object.new 이와같이 하면 객체의 레퍼런스가 같은지 비교하는데,

다른 언어에선 주소값을 비교하는 이유와 엘릭서가 그렇게 동작하지 않는 이유를 추측해본다면

다른 언어들은 다른 쓰레드에서 값이 언제라도 바뀔 수 있기때문에 레퍼런스가 같은지 비교하고, 엘릭서는 두 객체가 한번 만들어지면 절대 변할 일 없기때문에 좀더 자신있게 값 전체를 비교하는 식으로 되어있지 않나 싶네요... 레퍼런스 비교대신에...

맞나 모르겠습니다...

Copy link
Contributor

@Invidam Invidam left a comment

Choose a reason for hiding this comment

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

수고하셨어요 👍👍

값 비교에 대해 말씀해주신 부분을 보고 무조건 주소 대신 값을 비교하면 비용이 많이 들겠다 생각이 들었는데, 또 함수형 프로그래밍에서는 패러다임 자체가 다를 수 있겠다는 생각이 들었습니다 ㅋㅋㅋ

여담으로 엘릭서는 처음봤는데 정말 신기하네요! 기저사례 처리하는 것도 신기하구 반복문도 없다고 얘기하셨던 것 같은데 그것도 참 신기해요 ㅋㅋㅋ

@meoooh
Copy link
Contributor Author

meoooh commented May 18, 2024

수고하셨어요 👍👍

값 비교에 대해 말씀해주신 부분을 보고 무조건 주소 대신 값을 비교하면 비용이 많이 들겠다 생각이 들었는데, 또 함수형 프로그래밍에서는 패러다임 자체가 다를 수 있겠다는 생각이 들었습니다 ㅋㅋㅋ

여담으로 엘릭서는 처음봤는데 정말 신기하네요! 기저사례 처리하는 것도 신기하구 반복문도 없다고 얘기하셨던 것 같은데 그것도 참 신기해요 ㅋㅋㅋ

네 저도 볼때마다 새롭네요...

말씀하셨던것처럼 비용이 많이 들겠다는 생각을 저도 똑같이 했거든요. 그래서 그것 관련해서 챗쥐피티한테 좀 물어보니까

특정 객체를 기반으로 새롭게 생성된 다른 객체가 있을때 이 객체끼리의 비교는 나름 내부적으로 최적화(?)를 해서 성능이 하락이 심하거나 하진 않는다는듯이 이야기를 하네요 ㅎㅎ

image

아마 위와같은 비교를 하면 obj2는 obj1을 기반으로 하여 만들어진것이기때문에 obj1 == obj2 할때 b와 c는 주소값이 동일하니 비교를 생략하고, 주소값이 다른 a만 서로 값비교를 해서 성능을 챙긴다고 이야기하는것같은데..

정말그런지 좀더 검증은 어떻게 해야할지 아직 모르겠네요 ㅎㅎ

이런 내부적인 구현 생각안하고, 이러한 특징만 알고있으면서

실제 프로그램(?)을 만들때에 이용하면 편한 부분도 있을꺼같습니다.

@leokim0922
Copy link
Contributor

더불어 제출하신 후 우측 이터레이션 설정을 현재주차로 설정 부탁드리겠습니다 😄 이번 주차는 제가 변경해놨어요!

@meoooh
Copy link
Contributor Author

meoooh commented May 18, 2024 via email

@leokim0922 leokim0922 merged commit 174d25e into DaleStudy:main May 19, 2024
1 check passed
@dev-jonghoonpark dev-jonghoonpark changed the title Week 3 solutions [김한기] Week 3 solutions May 19, 2024
@dev-jonghoonpark
Copy link
Contributor

@meoooh 안녕하세요!
PR 제목에 discord 이름도 적어주시면 감사하겠습니다 : )

이 PR은 제가 업데이트 하였습니다...! 🥰

@meoooh
Copy link
Contributor Author

meoooh commented May 19, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants