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/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); +};