
각 인덱스별 숫자에 따라 +/-의 조합으로 풀 수BackTraking 방식으로 풀게 되면 O(2^n)의 시간복잡도가 예상된다. 사실 최초 제시된 n의 값이 20이었기 때문에 2^20이더라도 1억 미만의 값이 산출되므로 시간복잡도 상 문제가 되지 않을 것이라 예상하였다.
이번 문제는 구간 합 문제 유형이다. 크게 Prefix 결과(선택된 index 이전 결과)와 PostFix(선택된 index 이후 결과의 값)을 활용한다.1\. 보조 리스트 a(Prefix 배열)와 b(Postfix 배열)를 생성하고, a는 각 요소의 왼쪽 요소들의 곱

문제풀이 이번 문제는 BFS 문제의 변형 유형이다. 일반 BFS 문제와의 차이점은 인접 Node 선택에 대해 2가지 변형을 이루고 있는 부분이다. 1. Map에 row별 reversed 처리를 통해 인접 Node 변형을 이룬다는 것이고 2. Ladder or snake

이번 문제는 투 포인터를 활용하여 정렬 처리를 할 수 있는지에 대한 문제였다.(이 문제는 단순 버블정렬 등의 알고리즘을 통해 처리하더라도 Pass가 됨.)해당 문제 접근시 일단 0은 무조건 왼쪽으로 배치하고 2는 오른쪽으로 배치하도록 처리하고자 하였다.변수는 크게 3가
이번 문제는 두번의 이진탐색으로 해결가능한 문제이다.우선 첫번째 열 기준으로 이진탐색을 통해 어떤 행에 Target이 위치할지 판단하고 해당 행을 추출하여 한번더 이진탐색을 통해 Target 값이 있는지 확인한다.bisect 라이브러리를 통해 간단히 해결할 수 있어 기

이번 문제는 선분의 기울기를 활용하는 문제이다. 선분은 두 점만 정해지면 기울기가 정해진다는 특성에 기반하여 주어진 점들 중에서 같은 기울기를 가지는 선분들 중 가장 많은 개수의 점을 찾도록 처리하면 된다.이를 위해 각 점 쌍의 기울기를 계산하고, 기울기별로 갯수를 계

이번 문제는 DP와 Two Pointer를 활용하여 해결하였다. 주어진 문자열 s와 t에서 문자열 t를 만들기 위한 경우의 수를 계산하는 문제이다. 이를 해결하기 위해 다음과 같은 단계로 접근했다.1 sCharidx 생성먼저, sCharidx라는 defaultdict(

이번 문제는 Two Pointer 방식으로 해결하였다. 우선 left,right 범위를 정의하는 l,r변수를 선언하고 그 범위 내에서 탐색을 진행하는 p 변수를 선언하였다.탐색 과정에서 크게 3가지 케이스에서 처리를 해주는 부분이 핵심이었는데 첫번째 부분은 현재 타겟이

https://leetcode.com/problems/sliding-window-maximum/

https://leetcode.com/problems/unique-paths-ii/각 위치 (row, col)에서, 만약 해당 위치에 장애물이 있다면 경로 수는 0로 처리한다.(0, 0) 위치는 출발점이므로 경로 수를 1로 초기화한다.첫 번째 행과 첫 번째 열

https://leetcode.com/problems/candy/이번 문제는 학생의 평가 점수에 따라 사탕을 배분하는 문제이다. 이 문제를 접근함에 있어서 우선 케이스를 2가지로 분류하였는데 1.평가가 오름차순으로 증가하거나 같은 구간 2.평가가 내림차순으로

https://leetcode.com/problems/subsets/재귀적 방식으로 DFS를 수행하여 인덱스 값을 늘려가면 경우의 수를 계산함.비트 마스킹 방식으로 주어진 nums에 대해 선택 여부를 관리하는 값을 생성한다.nums의 자리수를 n이라고 하였을때

https://leetcode.com/problems/insert-interval/하기 코드는 이진탐색 기반으로 조건에 따라 배열 삽입을 통해 문제를 해결하는 코드이다.s1,s2 / e1,e2를 각각 선언하는데 s1==s2인 경우 삽입 배열 시작점 기준 기존

https://leetcode.com/problems/simplify-path/1.입력 경로를 데크(queue)로 변환하여 문자열을 하나씩 처리한다.(파이선 Split 함수를 사용했으면 이렇게 할 필요가 없이 효율적으로 처리했을 듯하다)2.searchFile

https://leetcode.com/problems/hand-of-straights/상기 문제를 요약해보면 주어진 hand 에서 제시된 그룹사이즈만큼으로 배열을 나누어야 한다. 그 배열 내 숫자는 연속적으로 인접한 수가 나오도록 배분할 수 있는지에 관한 문제

https://leetcode.com/problems/longest-consecutive-sequence/상기 문제를 정렬되지 않은 배열 내에서 O(n) 속도로 즉 정렬을 사용하지 않고 가장 긴 연속된 수의 길이를 구하는 문제이다위 솔루션 기준에서 핵심은 하기

상기 문제를 지정한 조건 기준으로 괄호의 열고 닫힘이 적절하게 적용되었는지를 판단하는 문제이다.과거의 정보를 누적/트래킹 관리에 효율적인 자료구조인 스택을 활용한 문제였다. 기본을 다시 한번 다지기 적절한 문제이다.

https://leetcode.com/problems/find-all-anagrams-in-a-string/상기 문제는 p 문자의 각 글자를 재배치하여 s 문자 내 모든 시작 위치를 반환하는 문제이다.주어진 두 문자가 Anagram인지 판단하기 위해서는 각 문

https://leetcode.com/problems/shortest-palindrome/상기 문제는 주어진 문자를 회문(Palindrome)으로 변환하기 위한 최소한의 문자를 판단하여 추가하는 문제이다.이 문제는 좌측에서만 문자를 추가해야 하는 조건이 존재하

https://leetcode.com/problems/combinations/상기 문제는 주어진 문자를 회문(Palindrome)으로 변환하기 위한 최소한의 문자를 판단하여 추가하는 문제이다.이번 문제는 백트래킹 혹은 내장함수 combinations을 통해 해

https://leetcode.com/problems/delete-and-earn/submissions/상기 문제는 주어진 배열 하에서 특정 값을 선택시 +1/-1 값은 지우고 다시 선택하는 과정을 반복해나가면서 선택해온 값의 합을 최대화하는 문제이다.인접한

https://leetcode.com/problems/search-suggestions-system/이 문제는 주어진 제품 목록에서 주어진 검색어에 대한 제안을 반환하는 것으로, 각 검색어 접두사에 대해 최대 세 개의 제안을 만들어야 합니다.주어진 produc