[LeetCode] 24. Swap Nodes in Pairs 페어의 노드 스왑

2022. 2. 21. 19:28· #️⃣ Project 및 개발일지/Algorithm 문제 풀이
목차
  1. # 문제 설명 

파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자.

 

# 문제 설명 

24번 Swap Nodes in Pairs는 입력받은 연결 리스트를 페어단위로 스왑하는 문제이다.

Example

위 문제는 혼자 풀려고 해보았지만, 푸는 도중에 꼬이고 어떤식으로 풀어야할지 전혀 감이 잡히지 않아 책 풀이를 참고하였다.

책 풀이 코드를 이해하며 작성하는 시간을 가졌다. 

 

# 풀이방법 1 - 반복 구조로 스왑 (책 풀이 참고)

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
    
        root = prev = ListNode(None)
        prev.next = head
        
        while head and head.next :
            
            # b가 현재 노드 head를 가리키도록 함 - 과정 1
            b= head.next
            head.next = b.next
            b.next = head
            
            # 이전 노드 prev가 b를 가리키도록 함 - 과정 2
            prev.next = b
            
            # 다음 반복문을 위해 이동 
            head = head.next
            prev = prev.next.next
        
        return root.next

while 반복문을 이용하여 head를 순회한다. 

1.  b가 현재 노드 head를 가리키도록 함 

2. 이전 노드 prev가 b를 가리키도록 함 

3. 다음 반복문을 위해 이동 

 

| 이해과정 |

코드의 과정 1, 2를 그림으로 이해하며 풀어보았다.

 

| 핵심 |

while head and head.next :
            # b가 현재 노드 head를 가리키도록 함 
            b= head.next
            head.next = b.next
            b.next = head

            # 이전 노드 prev가 b를 가리키도록 함 
            prev.next = b
            # 다음 반복문을 위해 이동 
            head = head.next
            prev = prev.next.next

 

 

# 결과 

 

 

연결리스트 너무 어렵다... 다시 볼 필요가 있어보인다.

'#️⃣ Project 및 개발일지 > Algorithm 문제 풀이' 카테고리의 다른 글

[LeetCode] 92. Reverse Linked List II 역순 연결 리스트Ⅱ  (0) 2022.02.21
[LeetCode] 328. Odd Even Linked List 홀짝 연결 리스트  (0) 2022.02.21
[LeetCode] 2. Add Two Numbers 두 수의 덧셈  (0) 2022.02.21
[LeetCode] 206. Reverse Linked List 역순 연결 리스트  (0) 2022.02.17
[LeetCode] 234. Palindrome Linked List 팰린드롬 연결리스트  (0) 2022.02.06
  1. # 문제 설명 
'#️⃣ Project 및 개발일지/Algorithm 문제 풀이' 카테고리의 다른 글
  • [LeetCode] 92. Reverse Linked List II 역순 연결 리스트Ⅱ
  • [LeetCode] 328. Odd Even Linked List 홀짝 연결 리스트
  • [LeetCode] 2. Add Two Numbers 두 수의 덧셈
  • [LeetCode] 206. Reverse Linked List 역순 연결 리스트
HyeM207
HyeM207
"Reflections and Growth Through Records" 회고와 기록을 통한 성장으로
HyeM207
HYEM's Storage
HyeM207
  • ALL (115)
    • #️⃣ CS (Computer Science) (5)
      • Database (2)
      • SQL (2)
      • Git (1)
    • #️⃣ Data Engineering (43)
      • Airflow (18)
      • Spark (8)
      • Snowflake (2)
      • BI,DashBoard (4)
      • ELK Stack (2)
      • Hadoop (5)
      • Kafka (4)
    • #️⃣ Cloud&Container (16)
      • AWS (8)
      • GCP (1)
      • Docker (6)
      • Kubernetes (1)
    • #️⃣ Project 및 개발일지 (37)
      • Mini Project (5)
      • 개발일지 (9)
      • Algorithm 문제 풀이 (20)
    • #️⃣ 책 리뷰 (4)
    • #️⃣ 회고글&프로젝트 후기 (10)

공지사항

인기 글

최근 댓글

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.v4.2.2
HyeM207
[LeetCode] 24. Swap Nodes in Pairs 페어의 노드 스왑
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.