diff --git "a/Moonjonghoo/hash/A\353\241\234 B\353\247\214\353\223\244\352\270\260.js" "b/Moonjonghoo/hash/A\353\241\234 B\353\247\214\353\223\244\352\270\260.js" new file mode 100644 index 0000000..e9f1e33 --- /dev/null +++ "b/Moonjonghoo/hash/A\353\241\234 B\353\247\214\353\223\244\352\270\260.js" @@ -0,0 +1,28 @@ +function solution(before, after) { + let hash1 = new Map(); + let hash2 = new Map(); + + for (let i = 0; i < before.length; i++) { + hash1.set(before[i], (hash1.get(before[i]) || 0) + 1); + hash2.set(after[i], (hash2.get(after[i]) || 0) + 1); + } + + // Map 비교 함수 + function compareMaps(map1, map2) { + if (map1.size !== map2.size) return false; // 크기 비교 + for (let [key, value] of map1) { + if (map2.get(key) !== value) return false; // 키-값 비교 + } + return true; + } + + // 비교 결과 반환 + return compareMaps(hash1, hash2) ? 1 : 0; +} + +console.log(solution("olleh", "hello")); // 1 +console.log(solution("apple", "ppale")); // 0 + +console.log(solution("olleh", "hello")); + +//바꿀수있다는것은 구성 요소의 종류와 개수가 같으면됩니다. diff --git "a/Moonjonghoo/hash/\353\223\261\354\210\230 \353\247\244\352\270\260\352\270\260.js" "b/Moonjonghoo/hash/\353\223\261\354\210\230 \353\247\244\352\270\260\352\270\260.js" new file mode 100644 index 0000000..7648303 --- /dev/null +++ "b/Moonjonghoo/hash/\353\223\261\354\210\230 \353\247\244\352\270\260\352\270\260.js" @@ -0,0 +1,10 @@ +function solution(score) { + // 각 학생의 평균 점수 계산 + const averages = score.map(([eng, math]) => (eng + math) / 2); + + // 평균 점수를 내림차순으로 정렬하여 등수 매기기 + const sorted = [...averages].sort((a, b) => b - a); + + // 원래 평균 점수 배열의 각 값이 정렬된 배열에서 몇 번째 순위인지 계산 + return averages.map((avg) => sorted.indexOf(avg) + 1); +} diff --git "a/Moonjonghoo/hash/\353\252\250\354\212\244\353\266\200\355\230\270(1).js" "b/Moonjonghoo/hash/\353\252\250\354\212\244\353\266\200\355\230\270(1).js" new file mode 100644 index 0000000..a66a7ee --- /dev/null +++ "b/Moonjonghoo/hash/\353\252\250\354\212\244\353\266\200\355\230\270(1).js" @@ -0,0 +1,41 @@ +function solution(letter) { + var answer = ""; + let morse = { + ".-": "a", + "-...": "b", + "-.-.": "c", + "-..": "d", + ".": "e", + "..-.": "f", + "--.": "g", + "....": "h", + "..": "i", + ".---": "j", + "-.-": "k", + ".-..": "l", + "--": "m", + "-.": "n", + "---": "o", + ".--.": "p", + "--.-": "q", + ".-.": "r", + "...": "s", + "-": "t", + "..-": "u", + "...-": "v", + ".--": "w", + "-..-": "x", + "-.--": "y", + "--..": "z", + }; + + let arr = letter.split(" "); + for (let i = 0; i < arr.length; i++) { + if (morse.hasOwnProperty(arr[i])) { + answer += morse[arr[i]]; + } + } + return answer; +} + +console.log(solution(".... . .-.. .-.. ---")); diff --git "a/Moonjonghoo/hash/\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.js" "b/Moonjonghoo/hash/\354\231\204\354\243\274\355\225\230\354\247\200\353\252\273\355\225\234\354\204\240\354\210\230.js" new file mode 100644 index 0000000..e69de29 diff --git "a/Moonjonghoo/hash/\354\247\204\353\243\214\354\210\234\354\204\234.js" "b/Moonjonghoo/hash/\354\247\204\353\243\214\354\210\234\354\204\234.js" new file mode 100644 index 0000000..5a55b55 --- /dev/null +++ "b/Moonjonghoo/hash/\354\247\204\353\243\214\354\210\234\354\204\234.js" @@ -0,0 +1,16 @@ +function solution(emergency) { + var answer = []; + let newarr = emergency.slice(); + newarr.sort((a, b) => b - a); + let map = new Map(); + for (let i = 0; i < newarr.length; i++) { + map.set(newarr[i], i + 1); + } + for (let i = 0; i < emergency.length; i++) { + let number = map.get(emergency[i]); + answer.push(number); + } + return answer; +} + +console.log(solution([3, 76, 24])); diff --git "a/Moonjonghoo/queue/\353\241\234\352\267\270\354\235\270_\354\204\261\352\263\265.js" "b/Moonjonghoo/queue/\353\241\234\352\267\270\354\235\270_\354\204\261\352\263\265.js" new file mode 100644 index 0000000..fa29f76 --- /dev/null +++ "b/Moonjonghoo/queue/\353\241\234\352\267\270\354\235\270_\354\204\261\352\263\265.js" @@ -0,0 +1,11 @@ +function solution(id_pw, db) { + const [id, pw] = id_pw; + + for (const [dbId, dbPw] of db) { + if (id === dbId) { + return pw === dbPw ? "login" : "wrong pw"; + } + } + + return "fail"; +} diff --git "a/Moonjonghoo/queue/\354\210\234\354\204\234\354\214\215\354\235\230_\352\260\234\354\210\230.js" "b/Moonjonghoo/queue/\354\210\234\354\204\234\354\214\215\354\235\230_\352\260\234\354\210\230.js" new file mode 100644 index 0000000..026633e --- /dev/null +++ "b/Moonjonghoo/queue/\354\210\234\354\204\234\354\214\215\354\235\230_\352\260\234\354\210\230.js" @@ -0,0 +1,14 @@ +function solution(n) { + let count = 0; + + for (let i = 1; i <= Math.sqrt(n); i++) { + if (n % i === 0) { + count++; // i가 약수 + if (i !== n / i) { + count++; // i가 n의 제곱근이 아니면 나머지 짝도 추가 + } + } + } + + return count; +} diff --git "a/Moonjonghoo/queue/\354\240\220\354\235\230_\354\234\204\354\271\230_\352\265\254\355\225\230\352\270\260.js" "b/Moonjonghoo/queue/\354\240\220\354\235\230_\354\234\204\354\271\230_\352\265\254\355\225\230\352\270\260.js" new file mode 100644 index 0000000..e05495c --- /dev/null +++ "b/Moonjonghoo/queue/\354\240\220\354\235\230_\354\234\204\354\271\230_\352\265\254\355\225\230\352\270\260.js" @@ -0,0 +1,8 @@ +function solution(dot) { + const [x, y] = dot; + + if (x > 0 && y > 0) return 1; // 1사분면 + if (x < 0 && y > 0) return 2; // 2사분면 + if (x < 0 && y < 0) return 3; // 3사분면 + if (x > 0 && y < 0) return 4; // 4사분면 +} diff --git "a/Moonjonghoo/queue/\355\212\271\354\235\264\355\225\234_\354\240\225\353\240\254.js" "b/Moonjonghoo/queue/\355\212\271\354\235\264\355\225\234_\354\240\225\353\240\254.js" new file mode 100644 index 0000000..23ce50a --- /dev/null +++ "b/Moonjonghoo/queue/\355\212\271\354\235\264\355\225\234_\354\240\225\353\240\254.js" @@ -0,0 +1,11 @@ +function solution(numlist, n) { + return numlist.sort((a, b) => { + const diffA = Math.abs(a - n); + const diffB = Math.abs(b - n); + + if (diffA === diffB) { + return b - a; + } + return diffA - diffB; + }); +} diff --git "a/Moonjonghoo/queue/\355\224\204\353\241\234\354\204\270\354\212\244.js" "b/Moonjonghoo/queue/\355\224\204\353\241\234\354\204\270\354\212\244.js" new file mode 100644 index 0000000..2289304 --- /dev/null +++ "b/Moonjonghoo/queue/\355\224\204\353\241\234\354\204\270\354\212\244.js" @@ -0,0 +1,17 @@ +function solution(priorities, location) { + let order = 0; + + while (priorities.length > 0) { + const current = priorities.shift(); + if (priorities.some((priority) => priority > current)) { + priorities.push(current); + location = location === 0 ? priorities.length - 1 : location - 1; + } else { + order++; + if (location === 0) { + return order; // 목표 프로세스가 실행되었을 때 순서를 반환 + } + location--; + } + } +} diff --git "a/Moonjonghoo/set/\353\254\264\354\236\221\354\234\204\353\241\234_K\352\260\234\354\235\230_\354\210\230_\353\275\221\352\270\260.js" "b/Moonjonghoo/set/\353\254\264\354\236\221\354\234\204\353\241\234_K\352\260\234\354\235\230_\354\210\230_\353\275\221\352\270\260.js" new file mode 100644 index 0000000..2c5ec77 --- /dev/null +++ "b/Moonjonghoo/set/\353\254\264\354\236\221\354\234\204\353\241\234_K\352\260\234\354\235\230_\354\210\230_\353\275\221\352\270\260.js" @@ -0,0 +1,22 @@ +function solution(arr, k) { + var answer = []; + for (let i = 0; i < arr.length; i++) { + if (!answer.includes(arr[i])) { + answer.push(arr[i]); + } + } + + if (answer.length > k) { + return answer.slice(0, k); + } else if (answer.length < k) { + while (answer.length !== k) { + answer.push(-1); + } + return answer; + } else { + return answer; + } +} + +console.log(solution([0, 1, 1, 2, 2, 3], 5)); +console.log(solution([0, 1, 1, 1, 1], 4)); diff --git "a/Moonjonghoo/set/\354\206\214\354\235\270\354\210\230\353\266\204\355\225\264.js" "b/Moonjonghoo/set/\354\206\214\354\235\270\354\210\230\353\266\204\355\225\264.js" new file mode 100644 index 0000000..5ec8197 --- /dev/null +++ "b/Moonjonghoo/set/\354\206\214\354\235\270\354\210\230\353\266\204\355\225\264.js" @@ -0,0 +1,17 @@ +function solution(n) { + var answer = []; + let division = 2; + while (n !== 1) { + if (n % division === 0) { + n = n / division; + answer.push(division); + } else { + division++; + } + } + return Array.from(new Set(answer)); +} + +console.log(solution(12)); // 기대값: [2, 3] +console.log(solution(17)); // 기대값: [17] +console.log(solution(420)); // 기대값: [2, 3, 5, 7] diff --git "a/Moonjonghoo/set/\354\244\221\353\263\265\353\220\234_\353\254\270\354\236\220_\354\240\234\352\261\260.js" "b/Moonjonghoo/set/\354\244\221\353\263\265\353\220\234_\353\254\270\354\236\220_\354\240\234\352\261\260.js" new file mode 100644 index 0000000..bc59693 --- /dev/null +++ "b/Moonjonghoo/set/\354\244\221\353\263\265\353\220\234_\353\254\270\354\236\220_\354\240\234\352\261\260.js" @@ -0,0 +1,14 @@ +function solution(my_string) { + var answer = ""; + let set = []; + for (let i = 0; i < my_string.length; i++) { + if (!set.includes(my_string[i])) { + set.push(my_string[i]); + answer += my_string[i]; + } + } + return answer; +} + +console.log(solution("people")); // 기대값: "peol" +console.log(solution("We are the world")); // 기대값: "We arthwold" diff --git "a/Moonjonghoo/set/\355\225\234_\353\262\210\353\247\214_\353\223\261\354\236\245\355\225\234_\353\254\270\354\236\220.js" "b/Moonjonghoo/set/\355\225\234_\353\262\210\353\247\214_\353\223\261\354\236\245\355\225\234_\353\254\270\354\236\220.js" new file mode 100644 index 0000000..71eb990 --- /dev/null +++ "b/Moonjonghoo/set/\355\225\234_\353\262\210\353\247\214_\353\223\261\354\236\245\355\225\234_\353\254\270\354\236\220.js" @@ -0,0 +1,44 @@ +// function solution(s) { +// var answer = ""; +// let arr = []; +// for (let i = 0; i < s.length; i++) { +// if (!arr.includes(s[i])) { +// arr.push(s[i]); +// } else { +// arr = arr.filter((e) => e !== s[i]); +// } +// } + +// answer = arr.sort().join(""); +// return answer; +// } + +// console.log(solution("abcabcadc")); // 기대값: "d" +// console.log(solution("abdc")); // 기대값: "abdc" +// console.log(solution("hello")); // 기대값: "eho" +// console.log(solution("hlelo")); + +function solution(s) { + var answer = ""; + let arr = []; + let hash = new Map(); + for (let i = 0; i < s.length; i++) { + if (!hash.get(s[i])) { + hash.set(s[i], 1); + } else { + hash.set(s[i], hash.get(s[i]) + 1); + } + } + for (let [key, value] of hash) { + if (value === 1) { + arr.push(key); + } + } + answer = arr.sort().join(""); + if (arr.length === 0) return ""; + return answer; +} + +console.log(solution("abcabcadc")); // 기대값: "d" +console.log(solution("abdc")); // 기대값: "abdc" +console.log(solution("hello")); // 기대값: "eho" diff --git a/Moonjonghoo/tree/Invert_Binary_tree.js b/Moonjonghoo/tree/Invert_Binary_tree.js new file mode 100644 index 0000000..d5a90fd --- /dev/null +++ b/Moonjonghoo/tree/Invert_Binary_tree.js @@ -0,0 +1,16 @@ +var invertTree = function (root) { + if (root === null) { + return null; + } + + // 왼쪽과 오른쪽 자식 노드를 교환 + const temp = root.left; + root.left = root.right; + root.right = temp; + + // 재귀적으로 자식 노드들을 반전 + invertTree(root.left); + invertTree(root.right); + + return root; +}; diff --git a/Moonjonghoo/tree/binary_tree_inorder_traversal.js b/Moonjonghoo/tree/binary_tree_inorder_traversal.js new file mode 100644 index 0000000..bd8c1ae --- /dev/null +++ b/Moonjonghoo/tree/binary_tree_inorder_traversal.js @@ -0,0 +1,13 @@ +var inorderTraversal = function (root) { + const result = []; + + const traverse = (node) => { + if (node === null) return; + traverse(node.left); // 왼쪽 서브트리 방문 + result.push(node.val); // 현재 노드 방문 + traverse(node.right); // 오른쪽 서브트리 방문 + }; + + traverse(root); + return result; +}; diff --git a/Moonjonghoo/tree/maximum_depth_of_binary_tree.js b/Moonjonghoo/tree/maximum_depth_of_binary_tree.js new file mode 100644 index 0000000..a268ad9 --- /dev/null +++ b/Moonjonghoo/tree/maximum_depth_of_binary_tree.js @@ -0,0 +1,18 @@ +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @return {number} + */ +var maxDepth = function (root) { + if (!root) return 0; + return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; +}; + +console.log(maxDepth); diff --git a/Moonjonghoo/tree/same_tree.js b/Moonjonghoo/tree/same_tree.js new file mode 100644 index 0000000..cb4c6fc --- /dev/null +++ b/Moonjonghoo/tree/same_tree.js @@ -0,0 +1,16 @@ +var isSameTree = function (p, q) { + // 두 노드가 모두 null인 경우 + if (p === null && q === null) { + return true; + } + // 한 노드만 null인 경우 + if (p === null || q === null) { + return false; + } + // 노드의 값이 다른 경우 + if (p.val !== q.val) { + return false; + } + // 왼쪽 및 오른쪽 서브트리를 재귀적으로 비교 + return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); +};