sub-array의 합이 주어진 target보다 크거나 같은 sub-array의 최소 길이는? (없다면 0 리턴)전형적인 슬라이딩 윈도우 전략if (sum >= target) -> st++ 앞부분 사이즈 줄이기if (sum < target) -> end++뒷부
지난포스트에서 2층까지 큐브를 맞추는 방법에 대해 알아보았다. 이제 마지막 3층을 맞춤으로써 3x3x3 큐브를 초급공식을 마무리 한다.
다음 동작을 하는 LRUCache class 를 구현하라.주어진 capacity값까지만 저장가능. 양수값으로 초기화된다.int get(int key) key가존재하면 value를 리턴하고 없다면 -1을 리턴하라.void put(int key, int value) key
주어진 배열에서 가장 긴 subsequence 즉 LIS의 갯수를 구하라.우선 LIS 길이를 구한 뒤, 배열을 backtracking을 통해 순회하면서 LIS길이를 만나면 총 갯수를 카운트 한다. 답은 맞지만 TLE가 발생한다. DP로 풀이하는 방법: memoizati
주어진 배열에서 아래 조건을 만족하는 세개의 값이 존재하면 true리턴i < j < k and nums\[i] < nums\[j] < nums\[k]LIS 문제의 풀이방법으로 해결 (https://velog.io/@soopsaram/Lee
무엇이든 시작이 가장 어렵다. 시작하기 귀찮은 일은 ChatGPT 먼저 초안 작성을 시킨 뒤, 살을 붙이는 방식으로 일하면 생산성이 많이 올라갈것같다. 특히 유닛테스트 TC작성은 항상 마음의 짐인데, ChatGPT 를 활용하면 보다 쉽게 작성을 시작할 수 있겠다.
BST가 주어지고 트리 내의 한 노드의 포인터가 주어진다.(root노드가 주어지는게 아님주의). 그 노드의 Inorder Successor를 리턴하라. 각 노드는 parent 노드를 가지고 있다. 유사문제는 : 285. Inorder-Successor-in-BST풀이
BST와 한 노드가 주어진다. 해당 노드보다 다음 큰 값을갖는 노드 즉, Inorder Successor 노드를 찾아라.모든 노드를 순회해서 찾을수도 있을것이다. 하지만 이진트리는 탐색시간이 각 단계별로 절반씩 줄어드는 O(logn)을 고려해야한다.inorder 순회는
<구글 엔지니어는 이렇게 일한다>를 읽던 도중 쓴 짧은 단상이다일을 하면 할수록 개발시 협업자들간 원활한 커뮤니케이션의 중요성이 점점 크게 느껴진다. 원활한 커뮤니케이션을 위한 전제 조건은 심리적 안정감인데. 질문을 하거나 문제나 아이디어 등을 제안해도 팀 내에서
JOBS-CHEF (잡스-셰프) 를 읽고 작성 2022년 2월 앞으로도 그럴지는 모르겠지만 최근까지 코딩 붐이 일었고, 미디어를 통해 소프트웨어 개발자 라는 직업이 매력있게 그려지는것을 종종 보았다. 여러 동기가 작용하겠지만 로봇에게 일자리를 잃지 않을까 대한 막연한
s2가 s1문자열의 permutation을 포함하고 있다면 true를 리턴하라. permutation 이라서 back tracking을 떠올릴 수 있지만 그렇게 풀면 대단히 느려진다. permutation 이라는것은 각 문자의 frequency가 항상 동일하다는 뜻.
링크드리스트가 주어진다. 노드에는 next 포인터와 random 포인터가 있는데, random은 해당 리스트내부의 무작위 노드를 가리킨다. 이 링크드리스트를 복사하여 새로운 링크드 리스트를 만들어라.노드의 값만 복사하는것은 쉽다. 문제는 random 노드. 기존리스트와
이진 트리 구조로 연결된 집이 존재한다. 인접한 두 집이 털렸을때 경보가 울린다. 경보를 울리지 않고 모든 집을 털때 가장 많이 훔칠 수 있는 금액은?인접한 두 노드를 훔치지 않아야한다. 이전 House Robber 문제들 처럼 현재 노드에서는 훔치거나, 훔치지 않는
프로페셔널 도둑에게 훔칠수 있는 돈이 기록된 집의 리스트 배열이 주어진다. 집은 원형으로 배치되어있다. 따라서 배열의 맨 처음 집과 맨 마지막 집은 인접한 집이다. 인접한 두 집을 한꺼번에 훔치면 경보가 작동해 잡혀간다. 잡혀가지 않고 최대로 많이 훔칠수 있는 금액은?
liked/disliked 비율과 like갯수의 조합으로 정렬하면 좋은 문제 순서대로 파악이 가능할것같아서 Leetcode Rest API가 있는지 찾다가 누군가 이미 만들어놓은 기가막힌 스프레드 시트를 발견했다. 매일같이 업데이트 되는 시트이며 여기서 조건 정렬해서
주어진 배열에서 자기 자신의 오른쪽에 있는 값들중 자신보다 작은 값의 갯수를 구하라.numsl > numsr 일 때는 그 횟수를 cnt를 누적해서 더하다가. 크기가 반대가 되는 순간 (그동안 누적해서 더한 값이 l 의 오른쪽에있는 작은값의 갯수다)cnt값은 현재까지의
아래와 같은 동작을 구현하라. 기본적으로 trie를 구현하는 방법에 대한 문제이지만, 그 전에 hashtable만 사용하여 아주 간단한게 풀어보았다. hashtable 방법insert() 함수에서 모든 prefix를 해시테이블에 값 1로 저장한다. 그리고 전체 word
주어진 트리에서 root부터 leaf까지 path중에 합이 targetSum 과 같은 경우는 총 몇개인가 (root부터 시작될 필요 없음)https://leetcode.com/problems/path-sum-iii/기본적으로 560. Subarray Sum E
주어진 haystack 문자열에서 needle 문자열을 탐색했을때, 발견된 첫번째 인덱스를 리턴, 없다면 -1리턴. 해시값 비교하기. O(n\*m)kmp 알고리즘
지난 단계에서 바닥면 흰색 크로스 그리고 옆면2층까지 맞추었다. 이번 단계에서는 2층까지 남은 조각을 모두 맞춘다.흰색을 포함한 남은 4개의 코너조각을 맞추는 단계다. 우선 해당 조각을 3층으로 올린다. 만약 1층에 있던 조각을 3층으로 올리기 위해서는 트위스트 동작을