diff --git a/combination-sum/sora0319.java b/combination-sum/sora0319.java new file mode 100644 index 000000000..7232633d3 --- /dev/null +++ b/combination-sum/sora0319.java @@ -0,0 +1,26 @@ +import java.util.*; +class Solution { + public List> combinationSum(int[] candidates, int target) { + List> output = new ArrayList<>(); + List sum = new ArrayList<>(); + checkTarget(candidates, target, 0, output, sum); + return output; + } + + private void checkTarget(int[] candidates, int target, int start, List> output, List sum) { + if (target == 0) { + output.add(new ArrayList<>(sum)); + return; + } + + for (int i = start; i < candidates.length; i++) { + int current = candidates[i]; + if (current > target) continue; + + sum.add(current); + checkTarget(candidates, target - current, i, output, sum); + sum.remove(sum.size() - 1); + } + } +} + diff --git a/decode-ways/sora0319.java b/decode-ways/sora0319.java new file mode 100644 index 000000000..2a0b11f7a --- /dev/null +++ b/decode-ways/sora0319.java @@ -0,0 +1,24 @@ +public class Solution { + public int numDecodings(String s) { + if (s == null || s.length() == 0 || s.charAt(0) == '0') return 0; + + int n = s.length(); + int[] dp = new int[n + 1]; + dp[0] = 1; + dp[1] = 1; + + for (int i = 2; i <= n; i++) { + if (s.charAt(i - 1) != '0') { + dp[i] += dp[i - 1]; + } + + int twoNum = Integer.parseInt(s.substring(i - 2, i)); + if (twoNum >= 10 && twoNum <= 26) { + dp[i] += dp[i - 2]; + } + } + + return dp[n]; + } +} + diff --git a/maximum-subarray/sora0319.java b/maximum-subarray/sora0319.java new file mode 100644 index 000000000..8e706c2f5 --- /dev/null +++ b/maximum-subarray/sora0319.java @@ -0,0 +1,18 @@ +class Solution { + public int maxSubArray(int[] nums) { + int n = nums.length; + int[] dp = new int[n]; + + dp[0] = nums[0]; + int maxSum = dp[0]; + + for (int i = 1; i < n; i++) { + dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); + maxSum = Math.max(maxSum, dp[i]); // 최대값 갱신 + } + + return maxSum; + } + +} + diff --git a/number-of-1-bits/sora0319.java b/number-of-1-bits/sora0319.java new file mode 100644 index 000000000..646f04d99 --- /dev/null +++ b/number-of-1-bits/sora0319.java @@ -0,0 +1,12 @@ +class Solution { + public int hammingWeight(int n) { + int cnt = 0; + String binary = Integer.toBinaryString(n); + + for(int i = 0; i < binary.length(); i++){ + if(binary.charAt(i) == '1') cnt++; + } + return cnt; + } +} + diff --git a/valid-palindrome/sora0319.java b/valid-palindrome/sora0319.java new file mode 100644 index 000000000..fdde15223 --- /dev/null +++ b/valid-palindrome/sora0319.java @@ -0,0 +1,27 @@ +class Solution { + public boolean isPalindrome(String s) { + int start = 0; + int end = s.length()-1; + + boolean isPalindrome = true; + s = s.toLowerCase(); + + while(start <= end){ + if((s.charAt(start) < 'a' || s.charAt(start) > 'z') && (s.charAt(start) < '0' || s.charAt(start) > '9')){ + start++; + continue; + } + if((s.charAt(end) < 'a' || s.charAt(end) > 'z') && (s.charAt(end) < '0' || s.charAt(end) > '9')){ + end--; + continue; + } + if(s.charAt(start) != s.charAt(end)) return false; + start++; + end--; + + } + + return isPalindrome; + } +} +