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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
CLAUDE.md
.claude/
.omc
31 changes: 31 additions & 0 deletions raejun/ContainsDuplicate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
const set = new Set();

for (let i = 0; i < nums.length; i++) {
if (set.has(nums[i])) {
return true;
} else {
set.add(nums[i]);
}
}

return false;
};

/*
2분 걸림.

시간 복잡도는 O(n)이다.

Set 자료구조를 이용하여 풀이했다.
배열을 순회하면서, Set에 요소가 있는지 확인하고, 있으면 true를 반환하고, 없으면 Set에 요소를 추가했다.
배열을 모두 순회한 후에도 중복된 요소가 없으면 false를 반환했다.


이전 문제들에 비해 매우 간단한 문제였다.
set, array, map 등 다양한 자료구조를 이용해서 풀 수 있을 것 같다.
*/
40 changes: 40 additions & 0 deletions raejun/RomantoInteger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
const mapped = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};

let num = 0;

for (let i = 0; i < s.length - 1; i++) {
if (mapped[s[i]] >= mapped[s[i + 1]]) {
num += mapped[s[i]];
} else {
num -= mapped[s[i]];
}
}

return num + mapped[s.at(-1)];
};

/*
26분 걸림.

시간 복잡도는 O(n)이다.

문자열을 순회하면서, 현재 문자와 다음 문자를 비교하여, 현재 문자가 다음 문자보다 크거나 같으면 num에 더하고, 그렇지 않으면 num에서 뺐다.
마지막 문자에 대해서는 순회가 끝난 후에 num에 더했다.

문제를 다소 어렵게 생각했다.
뭔가 특정한 규칙이 있을 것 같아 규칙을 찾는 것에 집중하다보니 시간을 많이 소모했다.
문제에서 뺼셈이 될 수 있는 경우가 정해져있기 때문에 많은 경우의 수를 고려할 필요가 없었다.
*/
Loading