전체 글 422

[LinkedList][Easy] 206. Reverse Linked List.

https://leetcode.com/problems/reverse-linked-list/description/ 단일 linked list를 뒤집는 문제.마찬가지로 다른 문제들의 초석이 된다. 원리를 알면 간단하므로, 완전히 이해하자. 코드ListNode* reverseList(ListNode* head) { ListNode* node = head; ListNode* prev = nullptr; while (node != nullptr) { ListNode* next = node->next; node->next = prev; prev = node; node = next; } return prev;}  결과

Leetcode/NeetCode 2024.07.13

[BinarySearch][Medium] 33. Search in Rotated Sorted Array

https://leetcode.com/problems/search-in-rotated-sorted-array/description/ 회전된 정렬된 숫자배열이 주어질 때, target 값을 찾고 있다면 그 index를 반환하라. Binary search의 종합 선물세트 문제.  우선 회전된 rotated index를 찾는다.  이후 target 값을 검색하되, 실제 access해야 할 index는 (index+rotateIndex) % arraySize 이다.  코드 더보기int searchMinIdxBS(vector& nums, int left, int right){ if (left > right) return -1; // 1, 2, 3, 4, 5 // // 5, 1, 2, ..

Leetcode/NeetCode 2024.07.13

[BinarySeach][Medium] 153. Find Minumum in Rotated Sorted Array

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/ 주어진 정렬된 배열이 rotated 되어 있을 때, 최소 값 원소를 찾아라. 회전 가능성을 우선 나열한다. 1,2,3,4,55,1,2,3,44,5,1,2,33,4,5,1,22,3,4,5,1 left, mid, right 를 기준으로 크기 순서에 의해 3경우 분기가 가능하다. 1. left가 최소인 경우2. mid가 최소인 경우3. right 가 최소인 경우 left가 최소인 경우는 그냥 left 값이 답이다. mid가 최소인 경우는 mid가 최소이거나 left side에 답이 있다.right가 최소인 경우는 right가 최소이거나 right side에 답이 있다...

Leetcode/NeetCode 2024.07.12

[BinarySearch][Medium] 875. Koko Eating Banans

https://leetcode.com/problems/koko-eating-bananas/description/ 아래의 조건을 만족하는 divider를 찾아라. 해당 divider로 각 입력된 수를 나누되 나머지가 있으면 1을 더한다.(코코가 시간이 남아도 해당 pile만 시간내에 먹는다)그 나눈 최종 합이 hour 보다 같거나 작은(시간내에 먹어야 한다)최소의 divider값을 찾아라.   우선 koko가 바나나를 먹는다에 비유를 해서 문제를 제시 했으므로, 구문들을 로직 체계로 변환을 해야 한다.  그것이 위에 명기한 것이며, 결국 조건을 만족하는 최소의 divider값을 찾는 것이 문제가 원하는 답이다.  조건을 만족한다 => divider로 나눈 총합이 hour 보다 같거나 작아야 한다. 이 중 ..

Leetcode/NeetCode 2024.07.12

[BinarySearch][Medium] 74. Search a 2D Matrix

https://leetcode.com/problems/search-a-2d-matrix/description/ 주어진 숫자 2D Matrix에서 대상 target이 존재하는지 여부를 반환하라. 2가지 방법으로 풀수 있다. 우선 1열의 값들로 대상값을 비교해 찾거나 아니면 target이 이전 열보다 크고 현재보다 작은지 찾는다.그러면 대상 행이 나오고 이 행에서 역시 같은 방법으로 binary search를 한다.  아니면, 전체 matrix를 1차원 index로 변환해서 한번에 binary search를 해도 된다.  두번째 방법이 더 심플해 보여 코드를 만든다. 코드 더보기bool searchMatrixBS(vector>& matrix, int left, int right, int target){ ..

Leetcode/NeetCode 2024.07.12

[BinarySearch][Easy] 704. Binary Search

https://leetcode.com/problems/binary-search/description/  기본적인 binary search 문제. TC log(N)기반의 타 문제 풀이들의 근간이 되므로, 잘 숙지 해 둘 것. int searchBS(vector& nums, int left, int right, int target) { if(left > right) return -1; int mid = left + (right-left) / 2; if(nums[mid] == target) return mid; else if(nums[mid] & nums, int target) { return searchBS(nums, 0, nums.size()-1, tar..

Leetcode/NeetCode 2024.07.11

[stack][Medium] 739. Daily Temperatures

https://leetcode.com/problems/daily-temperatures/description/ 정수배열이 주어지고, 이 배열이 각 날짜의 온도를 의미한다.각 날짜에서 더 따뜻해지는 날까지의 차수를 반환하라. 좋은 문제다.  코드로 가기 전에 반드시 수기로 로직을 확인할 필요가 있겠다. stack 데이터로 온도와 index데이터를 가진다. 현재 온도가 stack데이터 보다 높다면, 바로 계산하고 stack에 저장된 index에 이 차이를 쓴다.낮다면, stack에 계속 저장한다. 이게 다다.  stack에 최소값을 순차적으로 넣고 특정 조건에 pop하면 이전 조건들을 그대로 이용할 수 있음을 활용한다. 코드 더보기vector dailyTemperatures(vector& temp) { ..

Leetcode/NeetCode 2024.07.11

[stack][Medium] 22. Generate Parentheses

https://leetcode.com/problems/generate-parentheses/description/ n의 개수에 해당하는 유효한 괄호 구조를 만들라. 특정 조건에 따라 더해 나갈 수 있는 조건을 제한하며 특정 길이까지 수행한다. stack 보다는 backtrack에 가깝다.  진행 : '(' 를 더하거나 ')' 를 더할 수 있다.조건 : 1. open의 수가 n 보다 작으면 '('를 더할 수 있다.  2. open수가 close수보다 많을 때만, ')'를 더할 수 있다.  완료 : string 길이가 nx2가 되면 완료 된다.  코드 더보기void BuildParenthesis(vector& vBuff, string cur, int open, int close, int n){ if (..

Leetcode/NeetCode 2024.07.11

[stack][Medium] 155. Min Stack

https://leetcode.com/problems/min-stack/description/ Min stack을 구현하라. 모든 stack function은 O(1)에 작동하여야 한다.  두개의 stack을 사용한다. 하나는 기본 stack의 용도로, 다음 stack은 최소값 buffer로 사용한다.  stack의 본질은 어떤 특정 data를 넣은 역순으로 꺼내는 것이다. 최소값 stack에 (input 당시에) 최소값을 넣으면 꺼낼 때도 역시 보장되는 것이다.그냥 변수 하나를 써서 최소값을 기억해 놓는다고 생각해 보자. 하나에 대해서는 잘 작동할 것이나, 이것을 반환한 이후에 그 이전 최소값 정보가 필요하게 되고, 이것의 기능을 하는 것 또한 stack이 적당한 것이다.  코드 더보기class Min..

Leetcode/NeetCode 2024.07.11