https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/description/?envType=study-plan-v2&envId=top-interview-150 자바는 원본 배열도 같이 정렬해서 줘야하나보다. 일단 위 내용 생각해서 푼건 아래와 같음 어거지로 푼 느낌이라서 솔루션 참고했...
https://school.programmers.co.kr/learn/courses/30/lessons/140108 문자열을 제시된 규칙에 따라 분해하는 문제다. 아래를 핵심으로 생각하고 풀었다. x에 대한 변수와, x값과 x가 아닌 값에 대한 카운트 변수 필요 초기화용 플래그 필요 -> 소문자로만 이루어졌다고 했으므로 '#'으로 초기화 초기값을 만났을...
https://school.programmers.co.kr/learn/courses/30/lessons/155652 허용된 알파벳, 불가능한 알파벳을 판별하기 위해 26 사이즈의 boolean 배열을 만들었다. skip을 돌면서 배열에 마킹을 해준다. 그 이후에 s의 각 캐릭터 별로 아래 행동을 해줌 index만큼 이동할건데, 일단 +1해보고 알파벳 범...
https://school.programmers.co.kr/learn/courses/30/lessons/133499 연속으로는 발음할 수 없고, 패턴에 따라서 달리 매칭될 수 있을 거로 생각해서 DFS로 풀었다. 그러면서 이거 왜 레벨 1짜리 문제지.. 하고 생각했는데 다른 사람 풀이 보니까 그냥 연속단어 뭉치 (예를 들면 "ayaaya")를 허용하지 ...
https://school.programmers.co.kr/learn/courses/30/lessons/340199 이건 뭐 문제에서 의사코드를 주니까 그대로 치면 정답인데.. 아무튼 이런 가로/세로 문제는 min, max값을 구해서 다른 편의 min, max와 비교하면 회전 상태까지 고려할 수 있다. 다른 사람들 풀이도 봤는데, min, max 함수를...
https://school.programmers.co.kr/learn/courses/30/lessons/135808 사과를 가장 비싸게 팔 수 있는 경우는 최소값이 가장 높은 경우다. 그러므로 배열을 정렬해버리고, 앞에서 혹은 뒤에서 부터 팩사이즈(m)씩 끊어 계산한 뒤 누적하면 정답을 얻을 수 있다. 각 상자는 이미 정렬된 배열을 기반으로 만들어지므로...
https://school.programmers.co.kr/learn/courses/30/lessons/161989 마지막으로 롤러가 칠해진 포지션만 두면 쉽게 풀 수 있는 문제다. Section 배열 모두 순회하면서 안 칠해진 포인트를 찾았다면 그걸 시작점으로 잡고 롤러 길이만큼 갱신하면 된다. 오름차순 기준이라 했으니 이 방법이 section[n]...
https://leetcode.com/problems/find-median-from-data-stream/description/ 문제 구성만 보면 PriorityQueue 사용해서 어떻게든 풀 수 있는 것 같은데.. 비효율적이지만 일단 정확성만 생각하고 아래같이 풀어봤다. 당연히 테스트케이스가 커지면 문제가 생김.. 원본 PQ에 계속해서 연산 시도하고 ...
https://leetcode.com/problems/top-k-frequent-elements/description/ 문제 종류가 Heap이고, 빈도 수가 가장 높은 k개의 숫자를 배열로 리턴하란다. 그럼 먼저 떠오른게 PriorityQueue인데, 문제는 뭘 기준으로 정렬하느냐다. 당연히 정렬은 빈도다. 근데 빈도는 아직 모른다. 그럼 빈도 먼저 O...
https://leetcode.com/problems/merge-k-sorted-lists/description/ 이전에 풀었던 문제 같은데, 간단하게 다시 정리할 수 있다. 각 lists 요소는 ListNode 형태로, 이미 오름차순 정렬된 리스트다. 그러므로 PriorityQueue(우선순위는 node.val 기준)를 사용해서 첫 노드들을 모두 담아...
https://leetcode.com/problems/word-search-ii/description/ 나중에
https://leetcode.com/problems/design-add-and-search-words-data-structure/description/ 이것도 문제를 보면 기본적으로 Trie를 생각해야 할 것 같다. 마찬가지로 각 노드당 isEnd 플래그를 두어 끝 문자까지 탐색이 완전히 되었는지 본다. 기본 Trie 구현문제와 달리 이 문제에서 생각...
https://leetcode.com/problems/implement-trie-prefix-tree/description/ 음 이거 풀었던 문제네 https://velog.io/@potato_song/Trie-Medium-Implement-Trie-Prefix-Tree
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/ LCA(Lowest Common Ancestor) 찾는 문제. 두 노드 간의 최저 공통 조상이란, 두 노드를 모두 자식으로 갖는 가장 깊은 조상을 의미한다(후손에는 자신도 포함할 수 있음). 핵...
https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/ Binary search tree가 주어졌을 때 k번째로 작은 수를 찾는 문제다. 핵심은 중위 순회다. Binary search tree 특성 상 중위 순회하면서 count를 증/감 시키면 이것이 몇 번째로 작은 값인지 판단...
https://leetcode.com/problems/validate-binary-search-tree/description/ Binary Search Tree가 유효한지 검사하는 문제다. 이진 탐색 트리에서 왼쪽 서브트리의 모든 노드는 루트보다 작아야 하고, 오른쪽 서브트리의 모든 노드는 루트보다 커야 한다. 그러므로 재귀적으로 풀 때 min, max...
https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/ 핵심 아이디어는 전위 순회를 베이스로 루트를 선택하고, 그 루트를 기준으로 왼쪽 서브트리, 오른쪽 서브트리 순으로 순회하는 것 그래도 혼자 생각할 때 아이디어가 안 떠올라서 ...
https://leetcode.com/problems/subtree-of-another-tree/description/ root와 subRoot 두 개의 트리가 주어졌을 때, root 안에 subRoot 트리와 완전히 동일한 서브트리가 있는지 확인하는 문제다. (당연히 인스턴스가 같은게 아니라, 구조와 노드 값들이 똑같은 것) 트리가 이진 탐색 트리도 ...
https://leetcode.com/problems/serialize-and-deserialize-binary-tree/description/ 이진 트리에 대한 직렬화, 역직렬화를 구현하는 문제다. 이진트리는 배열로도 레벨 별 요소를 표현할 수 있다는 점을 활용하면 될 것 같다. 예를 들어 [1,2,3,null,null,4,5]에서 ~0번: level...