Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions contains-duplicate/nowrobin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
return new Set(nums).size != nums.length;
};

// 40ms 80.33MB
35 changes: 35 additions & 0 deletions house-robber/nowrobin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) {
// 집의 개수
const n = nums.length;

// 집이 하나뿐이면 그 집을 터는 것이 최대값
if (n === 1) {
return nums[0];
}

// dp[i] = 0번 집부터 i번 집까지 고려했을 때 훔칠 수 있는 최대 금액
const dp = Array(n).fill(0);

// 첫 번째 집까지의 최대 금액
dp[0] = nums[0];

// 두 번째 집까지의 최대 금액
// 두 집은 동시에 털 수 없으므로 둘 중 큰 값을 선택
dp[1] = Math.max(nums[0], nums[1]);

// 세 번째 집부터 마지막 집까지 반복
for (let i = 2; i < n; i++) {

// 두 가지 선택지 중 더 큰 값을 선택
// 1️⃣ 현재 집을 털지 않는다 → 이전 집까지의 최대 금액(dp[i-1])
// 2️⃣ 현재 집을 턴다 → 전전 집까지의 최대 금액(dp[i-2]) + 현재 집 돈(nums[i])
dp[i] = Math.max(dp[i - 1], nums[i] + dp[i - 2]);
}

// 마지막 집까지 고려했을 때의 최대 금액 반환
return dp[n - 1];
};
35 changes: 35 additions & 0 deletions longest-consecutive-sequence/nowrobin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* 주어진 숫자 배열에서 가장 긴 연속된 수열의 길이를 찾는다.
* 시간복잡도: O(n)
* 이유: 각 숫자는 최대 한 번만 시작점으로 검사되고,
* 연속 수열 탐색도 중복 없이 진행된다.
*
* @param {number[]} nums
* @return {number}
*/
var longestConsecutive = function(nums) {

// 배열을 Set으로 변환
const numSet = new Set(nums);

// 가장 긴 연속 길이를 저장
let longest = 0;
// Set을 순회
for (let n of numSet) {
// 현재 숫자가 연속 수열의 "시작점"인지 확인
// n-1 이 존재하면 이미 앞에 전 수열 존재함
if (!numSet.has(n - 1)) {

// 시작하는 수열 길이
let length = 1;

// 계속 존재하는지 확인
while (numSet.has(n + length)) {
length++;
}
// 지금까지 찾은 최대 길이 갱신
longest = Math.max(longest, length);
}
}
return longest;
};
19 changes: 19 additions & 0 deletions top-k-frequent-elements/nowrobin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/

// 13ms 60mb
var topKFrequent = function(nums, k) {
let freq = new Map()
for(let i of nums){
freq.set(i, (freq.get(i)|| 0) + 1 )
}
const sorted = [...freq.entries()].sort((a, b) => b[1] - a[1]);
let result = []
for (let j =0 ; j< k ; j++){
result.push(sorted[j][0])
}
return result
};
17 changes: 17 additions & 0 deletions two-sum/nowrobin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/

// 34ms 54mb
var twoSum = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[j] === target - nums[i]) {
return [i, j];
}
}
}
return []
};