diff --git a/3sum/Gotprgmer.java b/3sum/Gotprgmer.java new file mode 100644 index 000000000..46ba25c57 --- /dev/null +++ b/3sum/Gotprgmer.java @@ -0,0 +1,37 @@ +// 이전에 투포인터를 활용하여 시도했지만 중복된 값들을 처리하는데 어려움이 있었습니다. +// 그래서 해답을 보았고 새로운 방법으로 풀어보았습니다. +// 서로 다른 i와 j 인덱스를 2중 for문으로 진행하면서 +// i와 j사이 수들을 set으로 관리합니다. +// set에 -nums[i]-nums[j]가 존재하면 결과 리스트에 추가합니다. +// 시간복잡도 : O(N^2) +// 공간복잡도 : O(N) +class SolutionGotprgmer { + public List> threeSum(int[] nums) { + // 결과를 저장할 리스트 + List> result = new ArrayList<>(); + Set set; + Set> resultSet = new HashSet<>(); + List numList; + + + // 리스트 정렬 + Arrays.sort(nums); + for(int i=0;i 0 && nums[i - 1] == nums[i]) continue; + + set = new HashSet<>(); + for(int j=i+1;j(Arrays.asList(nums[i], -checkNum, nums[j])); + if(!resultSet.contains(numList)){ + result.add(numList); + resultSet.add(numList); + } + } + set.add(nums[j]); + } + } + return result; + } +} diff --git a/climbing-stairs/Gotprgmer.java b/climbing-stairs/Gotprgmer.java new file mode 100644 index 000000000..c507103d2 --- /dev/null +++ b/climbing-stairs/Gotprgmer.java @@ -0,0 +1,16 @@ +// dp문제 +// i번째 계단을 가려면 i-1번째 계단까지의 경우의 수와 i-2번째 계단까지의 경우의 수를 합친 것 +// 시간복잡도 : O(N) +// 공간복잡도 : O(N) +class Solution { + public int climbStairs(int n) { + int[] dp = new int[n+1]; + dp[0] = 1; + dp[1] = 1; + for(int i=2;i set = new HashSet<>(); + for(int num:nums){ + set.add(num); + } + System.out.println(set); + int answer = 0; + for(int num:nums){ + //왼쪽으로 확장 + int left = 0; + while(set.contains(num-(left+1))){ + left += 1; + } + + //오른쪽으로 확장 + int right = 0; + while(set.contains(num+right+1)){ + right += 1; + } + System.out.println(String.valueOf(left)+" " + String.valueOf(right)); + answer = Math.max(answer,left+right+1); + } + + return answer; + + } +} diff --git a/valid-anagram/Gotprgmer.java b/valid-anagram/Gotprgmer.java new file mode 100644 index 000000000..773edc54f --- /dev/null +++ b/valid-anagram/Gotprgmer.java @@ -0,0 +1,30 @@ +// 각 s와 t의 알파벳 수를 카운팅 시켜서 마지막에 카운팅이 모두 같으면 true +// 그렇지 않으면 false; + +// 시간복잡도 O(N) => 1중 for문 +// 공간복잡도 O(N) => N개 알파벳이 들어있는 Map 2개 +class SolutionGotprgmer { + public boolean isAnagram(String s, String t) { + Map sMap = new HashMap<>(); + Map tMap = new HashMap<>(); + if(s.length() != t.length()){ + return false; + } + for(int i=0;i