연결 리스트 두 개를 잇는 문제.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode* newList;
struct ListNode* head;
//l1이랑 l2 모두 비어있을 때
if(l1 == NULL && l2 == NULL) {
return NULL;
}
//l1이나 l2 하나가 비어있을 때
if(l1 != NULL && l2 == NULL) {
return l1;
}
if(l1 == NULL && l2 != NULL) {
return l2;
}
// 첫 수 비교 (l2가 더 작을 때)
if(l1->val > l2->val) {
newList = l2;
l2 = l2->next;
} else {
newList = l1;
l1 = l1->next;
}
head = newList;
while(l1 != NULL && l2 != NULL) {
if(l1->val > l2->val) {
newList->next = l2;
newList = l2;
l2 = l2->next;
} else {
newList->next = l1;
newList = l1;
l1 = l1->next;
}
}
if(l1 != NULL) {
newList->next = l1;
}
if(l2 != NULL) {
newList->next = l2;
}
return head;
}
재작년 이맘 때 즈음 부터 작년 초까지 정말 열심히 공부하던 자료구조.
그걸 활용한 문제를 풀어서 오랜만에 반가웠고 내가 어떤 부분에서 부족했구나를 복기하는 계기가 된 문제!!
오랜 만에 씨로 풀었다 ㅎㅎ
무려 런타임 0ms!!!!!