본문 바로가기

Web Development/algorithm

(27)
[Algorithm][LeetCode 2918] Minimum Equal Sum of Two Arrays After Replacing Zeros 이번 글에서는 LeetCode 문제 2918. Minimum Equal Sum of Two Arrays After Replacing Zeros를 풀이하고, if / else if 구조와 독립된 if 구조에 대한 성능 실험을 함께 진행해봤습니다.1. 문제 설명You are given two arrays nums1 and nums2 consisting of positive integers.You have to replace all the 0's in both arrays with strictly positive integers such that the sum of elements of both arrays becomes equal.Return the minimum equal sum you can obtain..
[Algorithm][LeetCode 69] Sqrt(x) LeetCode 문제 풀이 - 제곱근 구하기 (Square Root of x)문제 설명주어진 비음수 정수 x에 대해, 내장 제곱근 함수 없이 정수 제곱근을 구하고 내림(floor)하여 반환하는 문제입니다. 즉, Math.sqrt, pow(x, 0.5), x ** 0.5와 같은 내장 함수는 사용할 수 없습니다.Input: x = 4Output: 2Input: x = 8Output: 2접근 방법제곱근은 수학적으로 sqrt * sqrt = x를 만족하는 sqrt를 구하는 것과 같습니다. 단, 실수로 정확하게 구하는 것이 아니라, 정수 범위 내에서 내림한 값을 구하는 것이 목표입니다.따라서 가능한 제곱근 후보를 이진 탐색(Binary Search)으로 좁혀가며 정답을 구할 수 있습니다.풀이 코드 (JavaScr..
[Algorithm][LeetCode 35] Search Insert Position 이진 탐색을 활용한 삽입 위치 찾기 (O(log n))정렬된 배열이 주어졌을 때, 특정 target 값을 찾고, 해당 값이 존재하지 않는다면 정렬된 상태를 유지하면서 삽입할 수 있는 위치를 반환하는 문제입니다.Given a sorted array of distinct integers and a target value,return the index if the target is found. If not, return the index where it would be if it were inserted in order.You must write an algorithm with O(log n) runtime complexity.Input: nums = [1,3,5,6], target = 5Output: 2In..
[Algorithm][LeetCode 1920] buildArray 배열 인덱스를 활용한 간단한 배열 구성 문제 - buildArrayLeetCode의 배열 문제 중 하나인 “Build Array from Permutation” 문제를 정리해보았습니다.문제 설명0부터 시작하는 순열 배열 nums가 주어졌을 때, ans[i] = nums[nums[i]]가 되도록 배열 ans를 구성하여 반환하는 문제입니다.여기서 0 기반 순열(zero-based permutation)은 0부터 nums.length - 1까지의 정수를 중복 없이 포함한 배열을 의미합니다.예제 1Input: nums = [0,2,1,5,3,4]Output: [0,1,2,4,5,3]설명:ans = [ nums[nums[0]], // nums[0] = 0 → nums[0] = 0 nums[nums[1]], /..
[Algorithm][LeetCode 101] Symmetric Tree 대칭 트리 (Symmetric Tree)LeetCode 문제 중 하나인 Symmetric Tree는 이진 트리가 자기 자신을 기준으로 대칭인지 확인하는 문제입니다.문제 설명주어진 이진 트리의 루트 노드가 있을 때, 이 트리가 대칭 구조인지 확인하세요. 즉, 트리가 자기 자신을 중심으로 좌우가 거울처럼 대칭되어 있어야 합니다.예시 1Input: root = [1,2,2,3,4,4,3]Output: true예시 2Input: root = [1,2,2,null,3,null,3]Output: false문제 조건노드의 수: 1 이상 1000 이하노드의 값: 1 이상 100 이하1. 재귀(DFS)를 이용한 풀이어제 풀었던 "같은 트리인지 확인하는 문제"의 접근을 응용하여, DFS로 공간 복잡도를 최소화하는 방법을 ..
[Algorithm][LeetCode 100] Same Tree 100. Same TreeGiven the roots of two binary trees p and q, write a function to check if they are the same or not.Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.Example 1Input: p = [1,2,3], q = [1,2,3]Output: trueExample 2Input: p = [1,2], q = [1,null,2]Output: falseExample 3Input: p = [1,2,1], q = [1,1,2]Output: falseConstraintsThe ..
[Algorithm][LeetCode 96] Unique Binary Search Trees 고유한 이진 탐색 트리(BST)의 개수 구하기주어진 정수 n에 대해, 1부터 n까지의 값을 가지는 고유한 노드들로 만들 수 있는 서로 다른 구조의 이진 탐색 트리(BST)의 수를 구하는 문제입니다.문제 예시n = 3일 때 가능한 BST는 아래 그림과 같이 총 5가지입니다.Input: n = 3Output: 5접근 방식특정 노드 수 n에 대해 만들 수 있는 BST의 수는 재귀적으로 정의할 수 있습니다.예를 들어 n = 3인 경우:루트가 1인 경우: 나머지 노드(2, 3)는 모두 오른쪽 서브트리에 위치 → numTrees(0) * numTrees(2)루트가 2인 경우: 1은 왼쪽, 3은 오른쪽 → numTrees(1) * numTrees(1)루트가 3인 경우: 나머지 노드(1, 2)는 모두 왼쪽 서브트리에 ..
[Algorithm][LeetCode 2962] Count Subarrays Where Max Element Appears at Least K Times 최대값이 k번 이상 등장하는 서브어레이 개수문제 설명정수 배열 nums와 양의 정수 k가 주어집니다.조건: 배열 내의 최대값이 적어도 k번 이상 등장하는 모든 서브어레이의 개수를 구하시오.예시 1:Input: nums = [1,3,2,3,3], k = 2Output: 6Explanation: 다음과 같은 서브어레이가 조건을 만족함:[1,3,2,3], [1,3,2,3,3], [3,2,3], [3,2,3,3], [2,3,3], [3,3]예시 2:Input: nums = [1,4,2,1], k = 3Output: 0Explanation: 어떤 서브어레이도 최대값인 4를 3번 이상 포함하지 않음.제약 조건:1 51 61 5풀이 전략처음에는 map을 활용해서 해결하려고 했습니다. 하지만 k 이상이라는 조건은 단일..