diff --git a/combination-sum/essaysir.java b/combination-sum/essaysir.java new file mode 100644 index 0000000000..af0baba943 --- /dev/null +++ b/combination-sum/essaysir.java @@ -0,0 +1,32 @@ +import java.util.*; + +class Solution { + public List> combinationSum(int[] candidates, int target) { + // 합이 target 이 되는 경우의 수를 모두 고르시오 + // target 이 150 이하 + List> result = new ArrayList<>(); + List current = new ArrayList<>(); + + backTracking(candidates, target, 0 , result, current); + return result; + } + + public void backTracking(int[] candidates, int remain, int start, List> result, List current) { + if ( remain == 0 ){ + result.add(new ArrayList<>(current)); + return; + } + + if ( remain < 0 ){ + return; + } + + for (int i = start; i < candidates.length; i++) { + current.add(candidates[i]); + + backTracking(candidates, remain - candidates[i], i , result, current); + + current.remove(current.size() - 1); + } + } +} \ No newline at end of file diff --git a/number-of-1-bits/essaysir.java b/number-of-1-bits/essaysir.java new file mode 100644 index 0000000000..bc21698bf3 --- /dev/null +++ b/number-of-1-bits/essaysir.java @@ -0,0 +1,11 @@ +class Solution { + public int hammingWeight(int n) { + // 이진수로 바꾸고, 1 이 몇개 있는 지 파악한다. + return Integer.bitCount(n); + + // 추가 풀이. + // String ans = Integer.toBinaryString(n).replace("0",""); + // return ans.length(); + } +} + diff --git a/valid-palindrome/essaysir.java b/valid-palindrome/essaysir.java new file mode 100644 index 0000000000..0580bda1c1 --- /dev/null +++ b/valid-palindrome/essaysir.java @@ -0,0 +1,19 @@ +class Solution { + public boolean isPalindrome(String s) { + StringBuilder sb = new StringBuilder(); + for (char c : s.toCharArray()) { + if (Character.isLetterOrDigit(c)) { + sb.append(Character.toLowerCase(c)); + } + } + + String result = sb.toString(); + char[] x = result.toCharArray(); + for (int i = 0; i < x.length / 2; i++) { + if (x[i] != x[x.length - i - 1]) { + return false; + } + } + return true; + } +}