Google 태그 관리자 아이콘
반응형

LeetCode 132

.leetcode(300. Longest Increasing Subsequence)

문제 https://leetcode.com/problems/longest-increasing-subsequence/ 문제 풀기 전 rescursion으로 풀 수 있을거라 생각했다. 대신 영향받는것과 가져와야될 것을 먼저 정의 해봤다. (index, number) -> count index는 이전까지 진행했던 index 이전 Index중에서 number는 가장 큰 값 직접 푼 풀이 소요시간: 30분(08:50 ~ 09:20) class Solution { private int[] cache; public int lengthOfLIS(int[] nums) { cache = new int[nums.length]; Arrays.fill(cache, -1); int ret = 0; for (int i=0; i

알고리즘 풀이 2021.02.18

.leetcode(207. Course Schedule)

문제 https://leetcode.com/problems/course-schedule/ 문제 풀기 전 순환을 찾는 문제구나. 기존에는 사실 LinkedList기반아래에서 순환을 찾았는데 이렇게 배열단위의 순환은 처음이었다. 그래서 뭔가 Tores 이 방식으로 풀 수 있지 않을까 기대도 했었는데 링크드 리스트를 구지 만들어서 풀어야할까라는 생각이 들었다. 직접 푼 풀이 소요시간: 50분(22:13 ~ 11:03) 재도전하기 결국 못 풀었다. graph로 풀어보기, 기회가 되면 Tores and 요걸로 풀어보기 느낀점 솔루션 하나는 방향이 비슷하게 갔다. 다만 캐쉬를 세우지 못해서 못 풀었다. 캐쉬세우니 풀렸다. 2번째 방법은 graph를 이용한방법인데 처음 보는 풀이다. 이해하고 보면 결국 필수과목이 없..

알고리즘 풀이 2021.02.17

.leetcode(416. Partition Equal Subset Sum)

문제 https://leetcode.com/problems/partition-equal-subset-sum/ 문제 풀기 전 (잘못된 생각) 정렬한다음에 앞에서 출발해서 더하고, 뒤에서 부터 출발해서 더하면 되지 않을가. (잘못된 생각) 역시 합문제는 더하고 봐야된다. [1,1,2,2]는 안되는구나 (잘못된 생각) 같은 숫자 쌍은 없애자. [1,5,5,11] 39. Combination Sum 하고 비슷한 느낌을 받았다. 직접 푼 풀이 소요시간: 41분(17:17 ~ 17:58) class Solution { private int[][] cache; public boolean canPartition(int[] nums) { int sum = 0; for (int num: nums) { sum += num;..

알고리즘 풀이 2021.02.14

.leetcode(438. Find All Anagrams in a String)

문제 https://leetcode.com/problems/find-all-anagrams-in-a-string/ 문제 풀기 전 예전에 문제중에 이런걸 키로 만들어 카운트 했떤 문제의 아이디를 빌어서 키로 만들고 풀기 아니면 정렬하기 O(logN * n) 우선 변환하고 풀면 O(N*26) 혹시 trie로 풀 수 있지 않을까 직접 푼 풀이 소요시간: 15분(17:08 ~ 17:23, 정렬을 이용한 풀이) 4분(17:25 ~ 17:29, 키를 이용한 풀이) # 정렬을 이용한 풀이 class Solution { public List findAnagrams(String s, String p) { char[] keywords = p.toCharArray(); Arrays.sort(keywords); List re..

알고리즘 풀이 2021.02.14

.leetcode(494. Target Sum)

문제 https://leetcode.com/problems/target-sum/ 문제 풀기 전 2^n의 경우의 수를 줄여야한다. 큰수의 구성요소 찾던 완전제곱수 문제가 생각난다. 전체 숫자합에서 주어진 결과를 뺀 값은 여기내부의 숫자로 구성된다. 그 구성의 숫자를 구하면 되지 않을까. 아니다.. 며칠전에 푼 Path sum으로 풀면 되지 않을까. 공간도 많이쓰고 빠르지도 않을거 같다. 전체합과 누적 수를 뺀값을 갖고 있으면서 그걸 저장해서 풀자. 직접 푼 풀이 소요시간: 15분(09:45 ~ 10:00) class Solution { private int[] numbers; private int goal; private int[][] cache; public int findTargetSumWays(int..

알고리즘 풀이 2021.02.12

.leetcode(253. Meeting Rooms II)

문제 https://leetcode.com/problems/meeting-rooms-ii/ 문제 해설 시간대를 겹치지 해서 회의실을 잡는데 회의실을 최소로 빌려서 해결해라. 문제 풀기 전 한 10분동안은 문제를 오해했다. 첫번째는 그냥 가장 작은 수인줄, 두번째는 작은 수의 갯수인줄 오해했다. 결국 이건 꼬리물기식으로 문제를 풀어야하는데 예전에 한번 풀었떤 문제와 비슷하다는 생각이 들었다. 직접 푼 풀이 소요시간: 29분(09:50 ~ 10:19) class Solution { public int minMeetingRooms(int[][] intervals) { //정렬 Arrays.sort(intervals, Comparator.comparing(each -> each[0])); List ends = ..

알고리즘 풀이 2021.02.07

.leetcode(437. Path Sum III)

문제 https://leetcode.com/problems/path-sum-iii/ 문제 풀기 전 배열이 앞,뒤 접근을 고민했다면 트리는 위아래 출발을 고민한다. 위에서 출발하면 넘겨주는 파라미터를 배열로 해서 합한값, 본인을 내려주면 될거같다. 위에서 접근하는 방식을 취해보자 직접 푼 풀이 소요시간: 14분(09:31 ~ 09:45) class Solution { private int count=0; public int pathSum(TreeNode root, int sum) { pathSum(root, sum, new ArrayList()); return count; } private void pathSum(TreeNode root, int sum, List list) { if (root == nul..

알고리즘 풀이 2021.02.06

.leetcode(309. Best Time to Buy and Sell Stock with Cooldown)

문제 https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/ 문제 풀기 전 recursion으로 비교를 수행한다. recursion식은 리턴: profit 비교: profit으로 한다. 직접 푼 풀이 소요시간: 50분(08:00 ~ 08:50) 못풀었다. 재도전하기! 느낀점 위의 recursion으로는 풀지 못했다. 정확히는 풀었는데 속도 제한에 걸렸다. 실제로 모든 테스트에 통과하였으나 시간초과로 안된다고 결과가 나왔다. 이 문제를 접근할때 이렇게 했으면 더 좋았을거 같다. 일단 자료형을 파악하는 것이다. 다행히 문제에 배열로 잘나와서 이 단계는 쉽다. 그 다음 배열이라면 앞에서부터 접근할지, 뒤에서 부터 접근할지를 고민..

알고리즘 풀이 2021.02.05

.leetcode(236. Lowest Common Ancestor of a Binary Tree)

문제 https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ 문제 풀기 전 일단 두 노드를 찾는다. 두 노드의 부모를 비교하면서 제일 가까운 부모를 찾는다. 이렇게 해도 logN 으로 걸릴것이다. 직접 푼 풀이 소요시간: 41분(22:36 ~ 11:17) class Solution { private boolean found = false; private LinkedList gstack; public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { find(root, p, new LinkedList()); LinkedList pQueue = gstack; p..

알고리즘 풀이 2021.02.04
반응형