반응형

1. 문제

  LinkedList A(size : m)와 B(size : n)와 변수 a,b(a,b<m)가 주어질 때, 리스트 A의 a번째 원소부터 b번째 원소를 잘라내고, 그 공간에 LinkedList B를 연결하는 함수를 만들어라.

 

ex) 

A : 1 -> 2 -> 3 -> 4

B : 10 -> 11

a : 1

b : 2

 

=> A의 두번째부터 세번째 원소를 잘라내고, 그 공간에 B를 갖다 붙인다.

 

output : 1 -> 10 -> 11 -> 4

 

2. 방법

 

  1) A의 자르는 위치의 시작점(aStart), 끝점(aEnd)을 기록한다.

  2) aStart의 next에 bStart를 연결, bEnd의 next에 aEnd를 연결한다.

 

3. 풀이

class Solution:
    def mergeInBetween(self, list1: ListNode, a: int, b: int, list2: ListNode) -> ListNode:
        #시작점 기록
        aStartIdx = a - 1
        aStart = list1
        while(aStartIdx > 0 and aStart.next):
            aStart = aStart.next
            aStartIdx -= 1
        
        #끝점 기록
        aEndIdx = b + 1
        aEnd = list1
        while(aEndIdx > 0 and aEnd.next):
            aEnd = aEnd.next
            aEndIdx -= 1
        
        #시작점 연결   
        bStart = list2
        aStart.next = bStart
        
        bEnd = list2
        while(bEnd.next):
            bEnd = bEnd.next
        
        #끝점 연결
        bEnd.next = aEnd
        
        return list1
반응형

'Computer Science > 알고리즘' 카테고리의 다른 글

[LeetCode][Array] Two Sum  (0) 2022.01.09
[알고리즘 풀이 방식] 시작  (0) 2022.01.09
알고리즘 - Search  (0) 2021.04.21
Dynamic Programming  (0) 2021.01.21
위상 정렬(Topological Sort)  (0) 2020.12.29

+ Recent posts