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

문제 14번 "두 정렬 리스트의 병합" 질문 있습니다. #37

Closed
daeungdaeung opened this issue Oct 13, 2020 · 1 comment
Closed

Comments

@daeungdaeung
Copy link

안녕하세요, 파이썬 알고리즘 인터뷰 책으로 공부하고 있는 학생입니다.

풀이 1의 해설을 보면 "풀이가 명확하고 코드도 길지 않다." 라고 써있는데, 조건문의 조건들이 왜 저렇게 구성이 되었는지 전혀 감이 오지 않아서요...

구글링을 통해서 아래 코드를 활용하여 이해하기는 했지만, 책 저자님의 소스코드도 이해하고 싶어서 글 남깁니다.

감사합니다.

*구글링한 코드: https://rottk.tistory.com/entry/21-Merge-Two-Sorted-Lists

class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 is None :
return l2

    if l2 is None :
        return l1

    if (l1.val > l2.val) :
        head = ListNode(l2.val)
        head.next = self.mergeTwoLists(l1, l2.next)
    else :
        head = ListNode(l1.val)
        head.next = self.mergeTwoLists(l1.next, l2)

    return head
@likejazz
Copy link
Collaborator

likejazz commented Oct 19, 2020

안녕하세요.

바로 뒷 문장을 보면 "그러나 이 짧은 코드에 너무 많은 내용이 함축되어 있어서 이해하기가 쉽지 않을 뿐더러, 재귀가 포함되어 있어 더욱 어렵다."라고 언급해두었는데요. 사실 이 부분은 이해하기가 쉽지는 않습니다. 모든 재귀들이 얼핏 직관적으로 이해하기는 어렵습니다. 215페이지를 보면 풀이 과정을 도식화해둔게 있는데 그걸 참조하시면서 함께 앞에 설명을 천천히 읽어보시면 좋을거 같습니다. 연습장에 과정을 직접 그려가면서 따라가보는 편이 가장 많은 도움이 될 것 같습니다. 물론 다른 풀이도 얼마든지 가능하므로 계속 이해가 되지 않는다면 다른 재귀 문제를 충분히 풀어본 다음에 다시 풀이에 접근해 보는걸 추천해드립니다.

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

No branches or pull requests

2 participants