diff --git a/HamSungJun/Solution_1323.ts b/HamSungJun/Solution_1323.ts new file mode 100644 index 0000000..e2f5c72 --- /dev/null +++ b/HamSungJun/Solution_1323.ts @@ -0,0 +1,5 @@ +function maximum69Number (num: number): number { + let strNum = '' + num + strNum = strNum.replace(/6/, '9') + return parseInt(strNum) +}; diff --git a/HamSungJun/Solution_1863.ts b/HamSungJun/Solution_1863.ts new file mode 100644 index 0000000..5bf64eb --- /dev/null +++ b/HamSungJun/Solution_1863.ts @@ -0,0 +1,45 @@ +function subsetXORSum (nums: number[]): number { + if (nums.length === 0) return 0 + const subSets = [0] + for (let i = 0; i <= nums.length; i++) { + const visited = new Array(nums.length).fill(false) + backTrack({ endLength: i, basket: [], visited, nums, subSets }) + } + return subSets[0] +} + +function backTrack ({ endLength, basket, visited, nums, subSets }: {endLength: number, basket: Array, visited: Array, nums: Array, subSets: Array}) : void { + if (basket.length === endLength) { + console.log(basket) + if (basket.length === 0) { + subSets[0] += 0 + } else if (basket.length === 1) { + subSets[0] += nums[basket[0]] + } else { + subSets[0] += calcXOR(basket, nums) + } + } + for (let i = 0; i < nums.length; i++) { + if (!visited[i]) { + if (basket.length >= 1 && basket[basket.length - 1] > i) { + continue + } + visited[i] = true + basket.push(i) + backTrack({ endLength, basket, visited, nums, subSets }) + basket.pop() + visited[i] = false + } + } +} + +function calcXOR (basket: Array, nums: Array) { +// console.log('calc', basket, nums) + let xorAcc = nums[basket[0]] + for (let i = 1; i < basket.length; i++) { + xorAcc ^= nums[basket[i]] + } + return xorAcc +} + +console.log(subsetXORSum([1, 3])) diff --git a/HamSungJun/Solution_1920.ts b/HamSungJun/Solution_1920.ts new file mode 100644 index 0000000..5fe7f0b --- /dev/null +++ b/HamSungJun/Solution_1920.ts @@ -0,0 +1,3 @@ +function buildArray (nums: number[]): number[] { + return nums.map((num, i) => nums[nums[i]]) +};