노드와 노드가 양방향으로 연결되어 있는 자료구조이다. 각 노드는 value를 저장하는 부분, 이전노드(previous, head방향)와 다음노드(next, tail방향)를 가리키는 부분이 있다. Doubly Linked List는 아래와 같은 모양으로 구현이 된다. 단방향인 단순 Linked List에 비해 양방향이므로 저장공간이 더 필요하다. linked list의 front에는 head가 있고, linked list의 마지막에는 tail이 있다. 1. 삽입 push_front - head쪽에 노드를 추가한다 - 기존노드prev와 새로운노드next와 연결시킨다. - head와 새로운 node를 연결 시킨다. push_back - tail쪽에 노드를 추가한다 - 기존노드next와 새로운노드prev를 연결..
https://leetcode.com/problems/climbing-stairs/ Climbing Stairs - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 숫자 n 만큼 계단을 올라가야 된다. 계단은 1칸 또는 2칸 올라갈 수 있다. 나올 수 있는 모든 경우의 수를 구하여 반환 한다. 문제에는 규칙이 있다. // 0 => 0 // 1 => 1 // 2 => 2 // 3 => 3 // 4 => 5 // 5 => 8 // 6 => 13 // 7 => ..
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주식을 매수/매도 하여 가장 큰 차익의 결과를 반환하는 문제이다. 수익을 낼 수 없다면 0을 반환해야 된다. 숫자 배열이 주어진다. index는 하루를 의미하고 각 숫자는 그날의 주식 가격을 의미한다. ex) [7, 1, 5, 4, 6, 4]배열..
https://leetcode.com/problems/is-subsequence/ Is Subsequence - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문자열s, 문자열t를 준다. 문자열t에서 문자열s가 포함되어 있다면 true, 포함되어 있지 않다면 false 여기서 포함되어 있다는 의미는 문자열 s의 문자가 문자열 t의 문자에 순서대로 배치되어 있다는 의미이다. ex) s가 "abc", t가 "ahbgdc"일 경우 t의 0번째, 2번째, 5번째에 각각..
https://leetcode.com/problems/maximum-subarray/ Maximum Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 정수 배열이 주어지면 배열내 인접 원소의 합중 가장 큰 합을 return 시키라는 문제이다 ex1) [-2,1,-3,4,-1,2,1,-5,4] 배열이 있다면 인접 원소중 4, -1, 2, 1을 합한 6이 가장 큰 숫자이다. ex2) [1] 배열에서는 1이 원소의 합 중 가장 큰 숫자이다. ex3) ..
history.push와 Redirect차이점이 궁금해진 이유 개인 프로젝트에 HOC를 적용하며 props.history와 Redirect의 차이점이 무언지 궁금해졌다. 현재 로그인 유무에 따라 접근을 제한하기 위한 HOC를 만들고 있다. 예를 들어 로그인 페이지는 로그인 전은 접근이 가능하도록 하고 로그인 후는 로그인 페이지에 접근하려 할 경우 기본 페이지로 다시 돌아가게 작동을 하려하는 상황이다. 1. Redirect를 사용한 경우 function Authentication(props : any){ useEffect(() => { if(option){ (async () => { const request = await axios.get('/user') .then((response : AxiosRespo..
포인터는 메모리의 주소값을 담고있는 변수이다. 주소값은 다른 데이터를 가리킨다. (참조) Rust의 가장 흔한 종류의 포인터는 참조자인데 & 키워드를 이용하고 이들이 가리키고 있는 값을 빌린다. 스마트 포인터 포인터 처럼 작동하지만 추가적인 기능이 있는 데이터 구조이다. C++에서 유래 되었으며, 메모리 누수(memory leak)로 부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공한다. 포인터 처럼 동작하며 사용이 끝난 메모리를 자동으로 해제해준다. C++에서는 new 키워드를 사용하여 기본 보인터가 실제 메모리를 가리키도록 초기화 한 후, 기본 포인터를 스마트 포인터에 대입하여 사용한다. 정의된 스마트 포인터의 수명이 다하면 소멸자는 delete 키워드를 사용하여 자동으로 메모리를 해제한다..
Hashing 임의의 길이의 값을 해시함수를 사용하여 고정된 크기의 값으로 변환 Hash Table - hash table은 Key, Value로 데이터를 저장하는 자료구조이다 - 검색하고자 하는 Key값을 입력받아, hash함수의 결과물인 hash code를 배열의 index로 Value에 접근 - Time complexity : O(1) - Key, Hash function, Hash code, Value, Bucket slot으로 이루어져 있음 - Key ‣ Unique value이며 Hash function에 input되는 값이다. ‣ Key는 character, string, number, filedata 등이 올 수 있다. - Hash function ‣ Key를 입력받아 hash code를 ..