diff --git a/3sum/dalpang81.java b/3sum/dalpang81.java new file mode 100644 index 000000000..372201ccb --- /dev/null +++ b/3sum/dalpang81.java @@ -0,0 +1,47 @@ +/* +* 시간복잡도 : O(N^2) +* 공간복잡도 : O(1) +* */ +import java.util.*; + +class Solution { + public List> threeSum(int[] nums) { + List> result = new ArrayList<>(); + Arrays.sort(nums); + + for (int i = 0; i < nums.length - 2; i++) { + if (i > 0 && nums[i] == nums[i - 1]) { + continue; + } + + int left = i + 1; + int right = nums.length - 1; + + while (left < right) { + int sum = nums[i] + nums[left] + nums[right]; + + if (sum == 0) + { + // 합이 0인 경우 결과에 추가 + result.add(Arrays.asList(nums[i], nums[left], nums[right])); + + // 중복된 값 건너뛰기 + while (left < right && nums[left] == nums[left + 1]) + left++; + + while (left < right && nums[right] == nums[right - 1]) + right--; + + left++; + right--; + } + else if (sum < 0) + left++; + else + right--; + + } + } + return result; + } +} diff --git a/climbing-stairs/dalpang81.java b/climbing-stairs/dalpang81.java new file mode 100644 index 000000000..c79772a42 --- /dev/null +++ b/climbing-stairs/dalpang81.java @@ -0,0 +1,19 @@ +/* +시간복잡도 : O(n) + 공간복잡도 : O(n) + */ +class Solution { + public int climbStairs(int n) { + if (n <= 2) return n; + + int[] dp = new int[n + 1]; + dp[1] = 1; + dp[2] = 2; + + for(int i = 3; i <= n; i++) + dp[i] = dp[i - 1] + dp[i - 2]; + + return dp[n]; + + } +} diff --git a/valid-anagram/dalpang81.java b/valid-anagram/dalpang81.java new file mode 100644 index 000000000..4c418e9cb --- /dev/null +++ b/valid-anagram/dalpang81.java @@ -0,0 +1,26 @@ +/* + 시간복잡도 : O(N) + 공간복잡도 : O(1) + */ + +class Solution { + public boolean isAnagram(String s, String t) { + if(s.length() != t.length()) return false; + + int[] character = new int[26]; + + for(int i = 0; i < s.length(); i++) { + character[s.charAt(i) - 'a']++; + character[t.charAt(i) - 'a']--; + } + + + for(int num : character) { + if(num != 0) + return false; + } + + return true; + + } +}