문제 링크: https://leetcode.com/problems/mirror-reflection/매번 튕기는 위치를 구할 수 있다. (이전에 튕긴 위치, 레이저의 방향(위 or 아래)튕기는 위치는 결국 모서리에 접근하기 위해 p의 배수가 되는 y축 지점에 도
문제 링크: https://leetcode.com/problems/three-divisors/약수가 3개만 있다는 것은 본인이 소수의 제곱수일 경우만 해당한다. (4, 9, 25, ...)따라서 제곱근 함수를 통해 제곱수인지를 확인하고 그 제곱수가 소수인지 판
문제 링크:https://leetcode.com/problems/course-schedule/강의의 선수과목이 있을 때, 전부 수강할 수 있는지 여부를 묻는 문제다.선수 과목의 관계를 그래프로 나타낼 수 있다. 선수 과목이 없는 과목을 먼저 수강하여 선수과목이
문제링크: https://leetcode.com/problems/non-overlapping-intervals/입력으로 인터벌 배열이 주어지고 겹치지 않도록하기 위해 제외해야 할 최소한의 인터벌 개수를 구하는 문제다.인터벌을 순서대로 넣어야 할지 판단한다면 그
206. Reverse Linked List 문제링크: https://leetcode.com/problems/reverse-linked-list/ 주어진 연결 리스트의 역순을 반환하는 문제다. Solution 1 Iteration & New List 먼저 가장 간단한
문제링크: https://leetcode.com/problems/set-matrix-zeroes/매트릭스 중 0이 있을 경우 그 행과 열을 모두 0으로 변경하는 문제다.입력 매트릭스를 탐색하면서 즉각적으로 값을 변경할 경우 연쇄적으로 동작하기 때문에 바꿀 행과
424. Longest Repeating Character Replacement 문제링크: https://leetcode.com/problems/longest-repeating-character-replacement/
문제링크: https://leetcode.com/problems/binary-tree-maximum-path-sum/노드의 연결을 통해 합이 최대가 되는 합을 도출하는 문제다.시작은 어느 곳에서 해도 되며 한번 연결한 노드를 재방문 할 수 없다.꼭 루트에서 시
문제링크: https://leetcode.com/problems/merge-k-sorted-lists/주어진 오름차순 정렬된 연결 리스트들을 합해 하나의 오름차순 연결 리스트로 만드는 문제다.병합 정렬과 비슷한 방법으로 병합해 새 연결 리스트를 만드는 것을 반
문제링크: https://leetcode.com/problems/product-of-array-except-self/자기 원소를 제외한 나머지의 곱을 보여주는 배열을 얻는 문제이다.Product는 0이 포함되면 0이 되기 때문에 0의 존재를 기준으로 다음과 같
문제링크: https://leetcode.com/problems/maximum-subarray/Subarray의 합이 가장 큰 결과를 반환하는 문제다.index a~b의 Subarray의 합은 b까지의 합 - a까지의 합이다. 따라서 b로 끝나는 array의
문제링크: https://leetcode.com/problems/longest-increasing-subsequence/nums의 숫자배열에서 몇몇 원소를 삭제해subsequence를 만들 수 있다. 이 subsequence 중에 중복 없는 오름차순이 되는 가
문제링크: https://leetcode.com/problems/number-of-islands/1로 표현된 땅을 기준으로 총 섬이 몇개인지 구하는 문제이다. 섬은 상하좌우가 0인 바다로 막힌 것을 섬이라 한다.DFS나 BFS로 풀 수도 있지만 이러한 문제를
문제링크: https://leetcode.com/problems/linked-list-cycle/연결리스트가 사이클이 있는지 확인하는 문제다.방문한 노드를 Set에 저장하고 해당 노드를 다시 방문했는지를 확인해 Cycle이 있는지 판별한다.cur에 현재 노드를
문제링크: https://leetcode.com/problems/rotate-image/주어진 배열을 추가적인 배열 사용 없이 90도 회전시키는 문제다.90도 회전은 4개의 위와 같은 방법으로 4등분한 블록들을 재배치하는 방식으로 구현할 수 있다. 반복할 블록
문제링크: https://leetcode.com/problems/group-anagrams/같은 아나그램(들어있는 문자가 똑같은 문자를 아나그램이라 한다)끼리 묶은 새 배열을 반환하는 문제이다.문자열이 아나그램인지 비교하는 방법으로 가장 쉬운방법은 각 문자가
문제링크: https://leetcode.com/problems/binary-tree-level-order-traversal/이진트리의 레벨별 노드값들을 배열로 그룹화해 반환하는 문제다.깊이별로 노드를 분할하기 때문에 노드 탐색알고리즘 중 BFS를 사용했다.
문제링크: https://leetcode.com/problems/top-k-frequent-elements/숫자 => count를 저장하기 위해 hash map의 성질을 이용한다. 각 숫자의 count를 결과롤 가지는 map을 구성한 후 \[num, count
문제링크: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/오름차순으로 rotate 되어있는 배열의 가장 작은 수를 반환하는 문제이다.정렬되있는 데이터기 때문에 이진탐색을 통해 원하는 조건
문제링크: https://leetcode.com/problems/word-break/s 를 wordDict의 문자들로 나눌 수 있는지 알아내는 문제다. (중복해서 사용 가능)s\[i]까지의 문자열이 단어로 만들어질 수 있다면 s\[i] + wordDict의 단
문제링크: https://leetcode.com/problems/longest-consecutive-sequence/Union Find를 이용해 연속적인 원소가 나타났을 때 ex)234'5' 부모를 동일하게 묶어 동일한 부모는 연속적인 수임을 나타낼 수 있다.
문제링크: https://leetcode.com/problems/word-search/매트릭스에서 목표한 문자열을 연결할 수 있는지 찾는 문제다. 중복된 탐색은 불가능.지나온 지역을 row_col형태로 저장해 재방문하지 않도록 한다. DFS를 통해 인접한 지역
문제링크: https://leetcode.com/problems/longest-palindromic-substring/배열에 있는 문자열을 잘라 가장 긴 Palindorme을 찾는 문제다.가운데 값을 지정하고 좌우로 넓혀서 pruning하는 방법이다. 기존의
문제링크: https://leetcode.com/problems/combination-sum-iv/목표값을 nums 원소의 합으로 나타내는 방법의 경우의 수를 구한다.모든 경우의 수를 탐색해 구할 수도 있지만 target의 경우의 수는 comb\[target
문제링크: https://leetcode.com/problems/reorder-list/주어진 조건대로 연결 리스트를 재배열한다.slow, fast 노드를 이용해 가운데 노드를 구하고 중간부터의 노드를 stack에 쌓는다. stack에는 가장 마지막 값부터 중
문제링크: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/전위순회와 중위순회의 값을 통해 원본 트리를 완성한다. 이 때, 노드의 값들은 중복되지 않음
문제링크: https://leetcode.com/problems/validate-binary-search-tree/해당 트리가 BST인지 판별하는 문제다.BST의 특징은 왼쪽노드의 최대 < 중간노드 < 오른쪽노드의 최소 값이라는 것이다. 이는 중위
문제링크: https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/중복 없는 BST에서 두 원소의 공통조상을 찾는 문제다.두 원소를 찾을 때 까지 탐색한 후 두 노드의 노드 ~
문제링크: https://leetcode.com/problems/house-robber-ii/nums의 각 값은 집의 돈을 의미하고 훔치는 집은 연속해서 훔칠 수 없다. 집은 원형으로 이어져있어 첫번째 집과 마지막 집이 붙어있다.(하나만 훔칠 수 있다.)이미
211. Design Add and Search Words Data Structure 문제링크: https://leetcode.com/problems/design-add-and-search-words-data-structure/ 단어를 추가하고 단어가 사전에 존재하는
문제링크: https://leetcode.com/problems/3sum/가장 기본적인 반복문 3번을 이용한 O(n^3) 해법이다. 중복된 값들을 제거하기 위해 Set을 사용했다.두 개의 값을 반복해서 지정하고 마지막 값은 이진 탐색을 통해 찾는 방법이다.O(
문제링크: https://leetcode.com/problems/decode-ways/A~Z까지 문자에 1~26의 고유 번호가 있다. 주어진 숫자열을 보고 문자로 변환할 때, 가능한 경우의 수에 대해 구하는 문제다.숫자는 최대 두자리수까지 알파벳으로 변환될 수
문제링크: https://leetcode.com/problems/unique-paths/우측 아래의 목표로 최단거리로 가는 방법의 경우의 수를 구한다.최단거리로 가기 위해서는 오른쪽과 아래방향으로만 갈 수 있다. 이 때 오른쪽의 횟수와 아래 횟수는 정해져 있고
문제링크: https://leetcode.com/problems/palindromic-substrings/한 문자열에서Palindrom을 판별하기 위해서는 최소한 모든 문자를 식별해야 되기 때문에 O(n)의 시간이 걸린다. 하지만 한 문자열이 이미 Palind
문제링크: https://leetcode.com/problems/word-search-ii/words에 들어있는 단어들이 Matrix에 중복 없이 이어서 표현할 수 있다면 결과에 추가하는 문제다.기존 Word Search I의 방식대로 하되 Index map
11. Container With Most Water 문제링크: https://leetcode.com/problems/container-with-most-water/ 수직 선 두개를 골라 사이를 물로 채웠을 때 넘치지 않는 물의 최대 너비를 구하는 문제다. Solut
문제링크:https://leetcode.com/problems/jump-game/nums 배열에는 각 지점에서 가능한 최대 점프 거리를 나타낸다. 마지막 지점에 도착할 수 있는지 알아내는 문제다.최대로 멀리 갈 수 있는지 확인하기 위해선 O(n)의 시간복잡도는
문제링크: https://leetcode.com/problems/find-median-from-data-stream/데이터를 삽입하고 중간값을 가져올 수 있는 데이터 구조를 만든다. 총 짝수개일 경우 중간값은 두개의 평균을 낸다. 가장 큰 데이터, 가장 작은
문제링크: https://leetcode.com/problems/letter-combinations-of-a-phone-number/2~9의 숫자 배열이 주어질 때 해당 숫자로 만들 수 있는 문자열을 모두 찾는 문제다.문제에서 길이 제한이 4개로 주어졌다. 결
문제링크: https://leetcode.com/problems/generate-parentheses/만약 현재 '(': a개, ')': b개, 현재 결과 "????"라고 하면 이를'(': a - 1개, ')': b + 1개, 결과 "????("'(': a개,
문제링크: https://leetcode.com/problems/split-array-largest-sum/nums를 k개의 연속된 배열로 나눴을 때 그 중 합이 가장 큰 배열이 최소로 되는 결과를 구하는 문제다. 먼저 완전 탐색을 통해 문제를 해결해 보았다.
문제링크: https://leetcode.com/problems/kth-largest-element-in-an-array/O(n)의 시간복잡도로 배열의 n번째 큰 수를 구하는 문제다.처음엔 heap을 이용한 알고리즘을 구상했는데, 요구 조건에서 0(n)의 시간
문제링크: https://leetcode.com/problems/reverse-nodes-in-k-group/노드의 k번째마다 순서를 뒤집는 문제다. O(1)의 추가 공간복잡도를 만족해야 한다.스택을 이용하면 reverse를 간단하게 구현할 수 있지만,O(1)
문제링크: https://leetcode.com/problems/longest-valid-parentheses/가장 긴 괄호가 완성되는 길이를 구하는 문제다.완전탐색에 가까운 방식인데 추가배열을 이용해 조금 더 개선시킨 방법이다. 새 배열을 만들어 ( 의 경우
문제링크: https://leetcode.com/problems/trapping-rain-water/그림과 같은 막대그래프의 높이가 주어졌을 때, 비가 온다면 물이 고이는 양을 얻어야 한다.이전에 물로 가둘 수 있는 최대 막대그래프 문제를 풀었었다. 링크:ht
문제링크: https://leetcode.com/problems/n-queens/n\*n 체스판에서 n개의 퀸을 놓을 수 있는 모든 경우의 수를 찾는다.일반적인 매트릭스에서의 완전탐색을 통해 접근해 보기로 했다. Q를 놓게 되면 가로, 세로, 대각선에 더 이상
문제링크: https://leetcode.com/problems/unique-binary-search-trees/1~n의 값을가지는 BST의 종류 개수를 구하는 문제다.BST 는 트리 모양이 정해지면 단 하나의 방법으로만 값이 존재할 수 있다.수학적으로 접근할
문제링크: https://leetcode.com/problems/flatten-binary-tree-to-linked-list/Binary Tree를 pre-order순으로 right로 연결되어있는 연결리스트로 만드는 문제다.가장 먼저 전위순회를 통해 트리를
34. Find First and Last Position of Element in Sorted Array 문제링크: https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-arra
문제링크:https://leetcode.com/problems/palindrome-partitioning/Palindrome의 배열로 해당 문자열을 나누는 경우의 수를 모두 출력하는 문제다.앞에서 일정 구간의 palindrome을 구하면 나머지 문자열은 다시
문제링크:https://leetcode.com/problems/longest-common-subsequence/두 문자열에 존재하는 common subsequence의 최대 길이를 구하는 문제다. Subsequence는 기존 문자열의 순서는 유지하되 일부 문자
문제링크: https://leetcode.com/problems/partition-labels/문자열을 최대한 나누되 같은 문자는 같은 구역에 존재하도록 하는 partition을 구하는 문제다.문자열을 처음부분부터 최대한 한 구역에 포함시키는 쪽으로 접근하였다
문제링크:https://leetcode.com/problems/daily-temperatures/기온이 따뜻해질 때까지 필요한 날을 결과 배열로 반환한다. 이때 더 따뜻해지지 않는 경우 0으로 한다.언제 따뜻해지는지 알려면 미래의 데이터를 먼저 알아야한다. 이
문제링크:https://leetcode.com/problems/minimum-path-sum/첫번째 칸에서 마지막 칸까지 오른쪽 또는 아래로 움직여서 지나가는 숫자들의 최소합을 구하는 문제다.이동 방향이 오른쪽과 아래방향 밖에 없기 때문에 어떤 블럭 grid\
문제링크: https://leetcode.com/problems/find-all-anagrams-in-a-string/s의 substring중에 p의 anagram인 경우를 찾아 시작 index들을 구하는 문제다.Anagram인지 확인하기 위해선 구간에 있는
문제링크: https://leetcode.com/problems/sort-colors/description/인자로 0,1,2만 존재하는 nums 배열을 정렬하는 문제다.0, 1, 2만 존재하기 때문에 각각을 table에 저장한다. 대신 값이 고정이기 때문에 이
문제링크: https://leetcode.com/problems/decode-string/description/s로 압축된 문자열이 주어진다. 숫자내용물 로 압축된 부분은 내용물을 반복하는 것으로 압축되어있을 때 해독 결과를 결과로 반환해야 한다.괄호 사이의
문제링크: https://leetcode.com/problems/maximum-product-of-splitted-binary-tree/description/이진 트리에서 노드 하나를 끊었을 때 두 트리 노드들의 합을 서로 곱했을 때 최대가 되는 결과를 구하는
문제링크: https://leetcode.com/problems/count-nodes-equal-to-average-of-subtree/description/숫자가 들어있는 트리가 주어진다. 트리의 각 노드 중 자신의 값과 부분트리의 값의 평균이 같은 노드들의
문제링크: https://leetcode.com/problems/unique-binary-search-trees-ii/description/노드가 1~n까지 있는 이진트리의 가능한 모든 형태를 구하는 문제다.기존에 n개 노드의 이진트리의 개수를 구하는 문제를
문제링크: https://leetcode.com/problems/maximum-number-of-points-with-cost/description/배열이 주어지고 한 행에 하나의 원소를 고를 수 있다. 각 원소를 원소들의 합으로 점수를 얻게 되는데, 연속된
문제링크: https://leetcode.com/problems/hand-of-straights/description/hand에 존재하는 카드 배열이 주어진다. groupSize의 크기만큼 숫자가 이어지도록 모든 카드를 그룹지을 수 있는 경우 true 아니면
문제링크: https://leetcode.com/problems/copy-list-with-random-pointer/description/Random pointer 가 포함된 연결 리스트를 deepcopy로 복사하는 문제다. Random pointer는 해당
문제링크: https://leetcode.com/problems/linked-list-cycle-ii/description/연결 리스트가 순환하는지 알아보고 순환하는 경우 순환 시작 지점을 반환하는 문제다.리스트가 순환하는지 여부는 slow & fast poi