From 17648060a110fc4e43301053ad05290108610f22 Mon Sep 17 00:00:00 2001 From: HamSungJun Date: Tue, 29 Jun 2021 21:28:57 +0900 Subject: [PATCH] HamSungJun-938,1791,1859 --- HamSungJun/Solution_1791.ts | 10 ++++++++++ HamSungJun/Solution_1859.ts | 14 ++++++++++++++ HamSungJun/Solution_938.ts | 26 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 HamSungJun/Solution_1791.ts create mode 100644 HamSungJun/Solution_1859.ts create mode 100644 HamSungJun/Solution_938.ts diff --git a/HamSungJun/Solution_1791.ts b/HamSungJun/Solution_1791.ts new file mode 100644 index 0000000..b018ab0 --- /dev/null +++ b/HamSungJun/Solution_1791.ts @@ -0,0 +1,10 @@ +function findCenter (edges: number[][]): number { +/** + * 첫번째 엣지의 숫자들을 Set에 매겨놓고 + * 두번째 엣지에서 다시 등장한 버텍스가 + * 반드시 중점 버텍스가 된다. + */ + const set = new Set(edges[0]) + const [u, v] = edges[1] + return set.has(u) ? u : v +}; diff --git a/HamSungJun/Solution_1859.ts b/HamSungJun/Solution_1859.ts new file mode 100644 index 0000000..2369bfd --- /dev/null +++ b/HamSungJun/Solution_1859.ts @@ -0,0 +1,14 @@ +function sortSentence (s: string): string { +/** + * 끝자리 숫자를 기준으로 정렬 + * 조인하여 반환된 문자열에서 정규식 매칭을 통해 + * 숫자를 전부 제거하면 정렬된 문자열만 남아 반환됨. + */ + const sArr = s.split(' ') + sArr.sort((a, b) => { + const rankA = +a[a.length - 1] + const rankB = +b[b.length - 1] + return Number(rankA > rankB) - Number(rankA < rankB) + }) + return sArr.join(' ').replace(/\d/g, '') +}; diff --git a/HamSungJun/Solution_938.ts b/HamSungJun/Solution_938.ts new file mode 100644 index 0000000..71f63fb --- /dev/null +++ b/HamSungJun/Solution_938.ts @@ -0,0 +1,26 @@ +interface RangeCondition { + low: number; + high: number; +} + +function rangeSumBST (root: TreeNode | null, low: number, high: number): number { +/** + * 1. InOrder(Left -> Root -> Right) 으로 순회한다. + * 2. low <= val && <= hight 의 값이면 배열에 Push + * 3. 배열에 취합된 값들을 더하여 리턴. + */ + const l1: number[] = [] + recRangeSum(root, { low, high }, l1) + return l1.reduce((acc, curr) => (acc += curr), 0) +}; + +function recRangeSum (root: TreeNode | null, { low, high }: RangeCondition, list: number[]): void { + if (!root) return + recRangeSum(root.left, { low, high }, list) + const nodeValue = root.val + if (low <= nodeValue && nodeValue <= high) { + list.push(nodeValue) + } + + recRangeSum(root.right, { low, high }, list) +}