본문 바로가기

leetcode time based key value store https://leetcode.com/problems/time-based-key-value-store class TimeMap { private Map map; public TimeMap() { map = new HashMap(); } public void set(String key, String value, int timestamp) { if(!map.containsKey(key)) map.put(key, new ArrayList()); map.get(key).add(new Pair(value, timestamp)); } public String get(String key, int timestamp) { if(!map.containsKey(key)) return ""; List list = map.ge..
3월 말 이번 프로젝트 개선점.. 아래 부분은 꼭 개선이 필요하다. 꼭 개선하는 모습을 보여야 할 것이다 1,600라인이 넘는 task를 한번에 MR을 보낸점 코드 리뷰 미팅을 host 로 할 때는 사전에, 스크립트 구조를 만들어 놓자 꼭 예상되는 질문에 대한 답변도 '텍스트' 형태 로 미리 정리해두자. 귀찮아도 꼭 스크립트 구조를 텍스트로 만들어놓자. 텍스트로 번거롭더라도 어느정도 만들어야 하는 근거로는 텍스트로 만들면서 나의 생각 자체를 스스로 정리할 수 있고, 이 과정에서 스스로 리뷰를 하고, 검증을 거치는 단계를 거친다. 영어로 말하는게 익숙하지 않기 때문에, 스크립트를 어느정도 만들면서 자주 쓰는 표현을 공부하기 위한 목적도 있다.
BinarySearch 의 패턴화 패턴화? -> 어떤 Template(패턴)을 만들어서 binarySearch 로직이 필요한 모든 문제들에 이 패턴을 적용하자. 아래 1,2,3 부분과 right, left 가 어떻게 할당되는지, while 에 left < right 에서 equal 은 빠지는 포인트 등을 기억해두고, 템플릿화 하자. left, right 의 값은 답이 될 수 있는 범위를 포함한다! 즉, 답이 n 이 될 수 있으면, right = n으로 선언해준다. isBadVersion 은 조건을 의미한다. 즉, condition이다. return 해주는 left 는 2번 조건(condition)을 만족하는 가장 작은 값을 말한다 문제에서 1~n 의 넘버에서 최초로 불량이 나오는 k 값을 찾는 것인데, 이때 left를 리턴해주면 된다.
Trie Class 구현 시 주의해야 할 부분 문제: https://leetcode.com/problems/implement-trie-prefix-tree/ Implement Trie (Prefix Tree) - 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 Trie 의 insert 함수를 구현 할 때 주의사항이 있음 아래 insert1 과 insert2 함수 중에 어떤 코드가 제대로 동작할까? 답은 insert2 만 제대로 insert 되고, insert1 은 insert가 제대로 되지 않는다. curr...
leetcode 887 superEggDrop class Solution { public int superEggDrop(int k, int n) { // dp(K,N): max # of moves needed to solve the problem. // // dp(K,N) = 1 + (1 dp(N,K) 의 정의 자체가 정확한 낙하한계지점을 알기 위한 최대 낙하 횟수이고, 우리가 설정한 x에 따라 다음 스텝은 dp(k-1, x-1) 과 dp(k, n-x) 로 쪼개지는데, 이 둘 중에 최대값을 고려해야만, dp(n,k) 값이 최대가 되기 때문이다. // 근데, 각각의 dp(n-1, x-1), dp(k, n-x) 의 최대값 pair 중에 가장 작은 값이 dp(k,n)이 된다. // 이유는, x 라는 초기에 우리가 pick하는 낙하지점의 변수가 변할때, 가..
206. Reverse Linked List (Leetcode) Naive Approach로는, ArrayList를 하나 선언해서 LL 를 순회하면서 해당 ArrayList에 원소를 모두 넣은 후, 다시 거꾸로 ArrayList를 순회하면서 링크드리스트를 만들 수 있는 방법이 있지만, Space 를 불필요하게 사용한다. 그러므로 Singly LinkedList 를 in-place 로 Reverse 시켜보자.(공간 낭비 ㄴㄴ) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.v..
297. Serialize and Deserialize Binary Tree Serialize , Deserialize - 결국 Tree를 순회해서 -> 배열 모양의 String으로 만들거나 (Serialize) - 배열 모양의 String을 각각의 원소들로 parsing 한 배열로 만들 후, 이 배열을 순회하면서 Binary Tree 자료구조에 Binding 하는 것이다. (Deserialize) 여기서 나는, 각각에 대해 BFS 방법을 사용하고자 한다. Serialize 에서는, - Tree 를 BFS로 Queue에 먼저 넣어두고, Queue에서 값을 빼서 ArrayList에 넣어준다.(단, 현재 node가 null이면, null을 arrayList에 넣어준다.) - 이렇게 만든 ArrayList를 string으로 직렬화 Deserialize 에서는 - Queue 자료구조에 ..
코딩인터뷰 마스터하기(1) - Intro https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU New Year Gift - Curated List of Top 75 LeetCode Questions to Save Your Time New Year Gift to every fellow time-constrained engineer out there looking for a job, here's a list of the best LeetCode questions that teach you core concepts and techniques for each category/type of proble..