[HankerRank] Reverse a linked list / Tree: Preorder Traversal
2021. 5. 14. 20:29
알고리즘
# Reverse a linked list (Linked List) [문제] [코드] SinglyLinkedListNode* reverse(SinglyLinkedListNode* llist) { SinglyLinkedListNode* two=NULL, *three; while (llist) { three=two; two=llist; llist=llist->next; two->next=three; } return two; } [코드설명] llist : 다음 노드를 가리킴two : link를 변경할 노드three : 변경할 link의 값 llist는 다음 노드를 가리킨다. three와 two는 llist를 따라 다음 link로 움직인다. 다음 노드로 이동할 때마다 노드의 link를 반대로 연결해주어야 한다...
[HackerRank] Insert a node at the head of a linked list / Missing Numbers
2021. 5. 9. 02:25
알고리즘
# Insert a node at the head of a linked list (Linked List) [문제] [코드] SinglyLinkedListNode* insertNodeAtHead(SinglyLinkedListNode* llist, int data) { SinglyLinkedListNode* node = (SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode)); node->data = data; node->next = llist; llist = node; return llist; } [코드설명] node: 새로 추가할 node 동적할당 node의 data 필드에 data 저장.node의 next 필드에 llist(head pointer) 저장..
[HackerRank] Print the Elements of a Linked List / Insert a Node at the Tail of a Linked List
2021. 4. 11. 14:15
알고리즘
# Print the Elements of a Linked List (Linked Lists) [문제] [코드] void printLinkedList(SinglyLinkedListNode* head) { SinglyLinkedListNode* temp; temp = head; while(temp){ printf("%d\n", temp->data); temp = temp->next; } } [코드설명] temp: LinkedList를 head부터 NULL까지 탐색할 포인터 temp가 NULL일 경우 while문을 종료한다. NULL이 아닐 경우 temp가 가리키고 있는 node의 data value를 출력한다. temp를 다음 노드의 포인터로 바꿔준다. List의 마지막에 이르면 temp가 NULL로 바뀌..
[HackerRank] 2D Array - DS / Intro to Tutorial Challenges
2021. 4. 1. 17:55
알고리즘
# 2D Array - DS (array) [문제] [코드] int hourglassSum(int** arr) { int max = -63; int value; for(int i=1; i
[HackerRank] Arrays - DS / Equal Stacks
2021. 3. 24. 18:38
알고리즘
# Array - DS (array) [문제] [코드] int* reverseArray(int a_count, int* a, int* result_count) { int temp; *result_count=a_count; a_count--; for(int i = 0; i min) n2 -= h2[h2_count-1], h2_count--; if(n3 > min) n3 -= h3[h3_count-1], h3_count--; min = min_h(n1, n2, n3); } return min; } [코드설명] ① sum() sum: 배열 원소의 합 i가 0부터 count-1까지 증가하면서 arr[i]의 값을 sum에 더한다.sum을 반환한다. ② min_h() min: 세 가지 스택의 sum중 제일 작은 수..