반응형
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 |