인프런 커뮤니티 질문&답변

7d9fbah1mz님의 프로필 이미지

작성한 질문수

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

ReverseLinkedList_문제설명

return에 대해 질문드립니다.

작성

·

153

1

안녕하세요.

항상 선생님 강의 잘 듣고 있습니다.

이번 문제에서 핵심인

---

next = current.next; // 2를 저장해두고

current.next = prev; // 1.next 는 null로 설정하고

prev = current; // prev는 1로 설정하고

current = next; // current값을 2로 재설정

--

이부분에 대해서는 어느정도 이해가 된 것 같은데, 정말 기본적인것이 갑자기 궁금해져서 문의를 남기게 되었습니다..

마지막 return 을 prev값을 해주고 있는데, 어떻게 3,2,1이라는 값이 도출되는지 궁금해졌어요.

.next란 방식으로 할당해주지도 않아서 , prev = current하면 마지막에 return은 '3'만 되지 않을까 걱정했는데 3,2,1이라는 값이 reverse되어서 나오더라구요...


제가 어느부분을 놓친 것인지 잘 감이 오질 않습니다ㅠㅠ

조언 부탁드립니다!

감사합니다 

답변 3

2

이문제는 ListNode에서 next의 개념을 물어보는 가장 기본문제입니다.

이거 응용되서 여러 개념에서 물어봅니다.  가장 이해를 잘해야 될 문제이죠

이문제의 핵심은 

1N-2N-3NULL이

3N-2N-1NULL 이 되게하는 것입니다.

1)  Next= cur.next;

2) cur.next = Prev;

3) Prev= cur;

4) cur= Next

1,4번라인은 포인터만 한칸뒤로 가는 부분이고요

2,3번라인이 핵심입니다.

N이 Next, X가 널이라고 하면

1. 첫번째 수행시

 2N-3X = 2N-3X

1X=X

1X=1X

 2N-3X = 2N-3X

=================

2. 두번째 수행시

 3X = 3X

2N-1X=1X

2N-1X=2N-1X

 3X = 3X

=================

3. 두번째 수행시

 X = X

3N-2N-1X = 2N-1X

3N-2N-1X = 3N-2N-1X

 X = X

이렇게 수행됩니다. 이 그림을 계속 반복해서 보시면 이해가 되실겁니다. 

질문주신내용

=============================

마지막 return 을 prev값을 해주고 있는데, 어떻게 3,2,1이라는 값이 도출되는지 궁금해졌어요.

.next란 방식으로 할당해주지도 않아서 , prev = current하면 마지막에 return은 '3'만 되지 않을까 걱정했는데 3,2,1이라는 값이 reverse되어서 나오더라구요...

================================

cur.next = Prev;

=>cur.next에 이부분에 계속해서 Prev를 넣습니다.

Prev = cur;

=> 현재의 cur의 모든 정보를 Prev가 그대로 갖게됩니다.

 

 

1

ㅎㅎ 핵심 질문을 하셨네요 

이 문제는 정말 중요한 문제입니다 listNode next 개념인데요 이거 완전히 이해할수 있도록 동영상을 보충하거나 오늘밤에 글을쓰겠습니다 완전히 이해할때까지 제가 알려드릴게요

0

7d9fbah1mz님의 프로필 이미지
7d9fbah1mz
질문자

자세히 설명해주셔서 감사합니다.

LInkdedList문제에서는 노드끼리 연결되어있음이 핵심인듯 하네요. 감사해요