728x90
반응형

분류 전체보기 279

[LeetCode] C++ 2. Add Two Numbers

https://leetcode.com/problems/add-two-numbers/description/ 문제 문제 분석- 예시 1과 같이 342 + 465를 계산하는 것이므로 가산기를 구현하였습니다. 역순으로 되어있기에 carry를 그대로 다음 라운드에서 이용할 수 있습니다. 계산 후 값을 결과에 넣을 때만 역순으로 넣어주면 됩니다. 풀이/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(i..

[LeetCode] C++ 206. Reverse Linked List

https://leetcode.com/problems/reverse-linked-list/description/ 문제 문제 분석- 재귀를 이용해서, 또는 반복문을 이용해서 풀 수 있습니다. 풀이 1 (재귀)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */class Solution {public:..

[LeetCode] C++ 21. Merge Two Sorted Lists

https://leetcode.com/problems/merge-two-sorted-lists/description/ 문제 문제 분석- list1과 list2의 각 요소들을 하나씩 비교해서 작은 것들을 먼저 결과에 넣습니다. 그 다음에 남은 리스트가 있다면 통째로 연결합니다. 풀이/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), ne..

[LeetCode] C++ 234. Palindrome Linked List

https://leetcode.com/problems/palindrome-linked-list/description/ 문제 문제 분석- Linked List의 값들을 다른 자료형에 옮겨서 양 끝을 하나씩 검사하는 방식으로 palindrome을 검사할 수 있을 것입니다. 양 끝에서만 접근이 이루어지기 때문에 Deque를 쓰는 것이 가장 효율적이라고 생각했습니다.- Runner 기법을 사용하여 구현한다면 모든 ListNode를 다른 자료형에 넣지 않고도 검사할 수 있을 것 입니다. 절반까지만 딱 읽어드리면서 그 절반을 reverse한 Linked List를 만들고, 이걸 남은 절반과 비교하면 됩니다. 풀이 1 (Deque)/** * Definition for singly-linked list. * struc..

[LeetCode] C++ 121. Best Time to Buy and Sell Stock

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/문제 문제 분석1. 가장 작은 값을 계속 갱신해가며 profit을 구하면 됩니다. 배열 순서대로 진행하면 이전의 결과와 차이를 계산하지 않고 계속 배열 뒤쪽의 값들과만 계산할 수 있습니다. 풀이class Solution {public: int maxProfit(vector& prices) { int min = 10000; int profit = 0; for(const auto& price: prices){ if(price

[LeetCode] C++ 238. Product of Array Except Self

https://leetcode.com/problems/product-of-array-except-self/description/ 문제 문제 분석1. 가장 빠른 풀이는 0이 2개 이상 나오는 경우 예외 케이스 처리해주고, 전체 곱을 구하고 각 요소로 나누는 것일 겁니다.하지만 문제 조건에 without using the division operation이라고 나와있기 때문에 이 방식은 옳지 않습니다.2. 왼쪽에서 시작해서 쭉 곱한 값과 오른쪽에서 시작해서 쭉 곱한 값을 구해서 두 배열 안의 값들을 매칭해서 곱하면 됩니다.즉, 해당 인덱스의 왼쪽에 있는 것들을 모두 곱한 값, 오른쪽에 있는 것들을 모두 곱한 값을 따로 구하고 두 값들을 곱해서 최종 값을 구하면 이는 본인을 제외한 나머지 값들을 모두 곱한 값..

[LeetCode] C++ 15. 3Sum

https://leetcode.com/problems/3sum/description/ 문제 문제 분석1. Brute force를 이용하면 문제는 풀리긴 하겠지만 분명 시간 초과가 날 것이라 생각했습니다.2. 정렬을 한 뒤에 Two pointer를 사용하는 방식을 생각했습니다. 기준 숫자, 기준 숫자 + 1 (left), 배열의 끝(right)에서 시작을 하여 이 합이 0보다 작다면 left를 이동시키고, 0보다 크다면 right를 이동시키는 방식을 이용하면 보다 효율적으로 계산할 수 있습니다.3. 같은 숫자를 가진 것에 대해서는 또 계산할 필요는 없기 때문에 건너뛰도록 하였습니다. 이외에도 배열 사이즈가 3보다 작던가, 이미 더이상 계산하는 것이 무의미한 케이스들에 대해서 검사하여 불필요한 계산을 줄이도..

[LeetCode] C++ 42. Trapping Rain Water

https://leetcode.com/problems/trapping-rain-water/description/문제 문제 분석1. BruteForce로 검사하면 물론 답은 나오겠지만, 시간초과가 날 것입니다.2. Two Pointer를 사용하는 방법. 물이 담기는 경우에는 항상 작은 것을 기준으로 담깁니다. 맨 왼쪽과 맨 오른쪽부터 시작하면서 가장 큰 블럭에 도달할 때까지 이동하면서 계산을 합니다. 가운데에 어떤 블럭이 있는지 모르는 상태에서 하나씩 접근해가면서 현재 왼쪽의 최댓값보다 오른쪽 블럭의 최댓값이 더 크다면 현재 위치에서 담길 수 있는 물의 양은 (왼쪽의 블럭 최댓값) - (왼쪽의 현재 위치의 블럭)이고, 왼쪽으로 포인터를 한 칸 이동시키면 됩니다. 오른쪽 관점도 마찬가지입니다.3. 스택을 이..

[Sveltekit] goto 함수가 작동하지 않을 때 (루트 페이지 이동 불가)

다음과 같은 logout 함수를 만들어 사용 중이었습니다.function logout() { goto("/");}폴더 구조는 위와 같았습니다. /admin에서 로그아웃 버튼을 누르면 / (가장 밖에 있는 +page.svelte)로 이동하도록 코드를 짰습니다. function clickLogOut() { logout(); }하지만 버튼을 아무리 눌러도 예상대로 / 페이지로 이동하지 않았습니다.function clickLogOut() { try { logout(); console.log("Logged out successfully"); } catch (error) { console.error("Logout failed:", error); } }다음..

기타 2024.08.07
728x90
반응형