[Leetcode] 110. Balanced Binary Tree
·
BE/algorithm
문제관련 토픽: DFS, Binary Tree, Tree난이도: Easy링크: https://leetcode.com/problems/balanced-binary-tree/description/요구사항주어진 Binary Tree가 height balanced 인 상태인지 확인height balanced = 두 서브트리의 높이의 차이가 1이상이 아닌 트리조건노드 개수 범위 [0, 5000]10^4 O(N) 시간복잡도 이전으로 풀어야 한다풀이모든 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이를 확인높이 차이가 1을 초과하면, 트리는 불균형하다고 판단, return FalseDFS방식으로 각 노드의 서브트리 높이를 계산하며 균형여부를 확인Stack으로 DFS를 풀이하니, 각 노드에 방문했는지 여부를 저장..
Eureka와 Eureka 설정방법
·
BE/BE
Eureka 란?Netflix가 개발한 서비스 디스커버리 툴MSA 아키텍쳐에서 각 인스턴스의 위치를 자동으로 찾고, 관리서비스 디스커버리?MSA에서 중요한 컴포넌트 → monolithic 에서는 서로의 인스턴스를 찾을 필요가 없었으니까!여러 서비스 인스턴스와 그 위치를 자동으로 탐지하고 관리하는 기능 → 분리되어있는 MSA 환경에서의 개발은 복합적인 MSA의 호출 발생서비스가 서로를 찾고 통신할 수 있도록 해주며, 수동으로 서비스 위치를 관리하는 복잡성을 낮춤!Eureka의 구성요소Eureka Server서비스 등록과 조회 기능을 제공모든 클라이언트가 서버에 등록을 해야함Eureka Client각 MSA 서비스E.g. product msa, order msa주요기능서비스 등록과 발견하트비트 매커니즘클라이..
[Leetcode] 121. Best Time to Buy and Sell Stock
·
BE/algorithm
문제: Best Time to Buy and Sell Stock 관련 토픽: Array, Dynamic Programming난이도: Easy 링크 https://leetcode.com/problems/best-time-to-buy-and-sell-stock요구사항prices 배열은 i번째 날짜의 주식의 가격을 담음정해진 하루에 주식을 사고, 주식을 산 시점 이후에 주식을 판매주식을 구매, 판매하며 어떤 조합이 가장 큰 수익을 낼 수 있는지 탐색수익이 발생하지 않는 경우에는 0을 반환  조건1 10만개의 요소를 다루는 문제는 효율적으로 풀이 하는 것이 좋다 O(n) ~ O(nlogn) 시간 복잡도의 풀이가 필요! 0 최대값,최소값을 구할 때 값 초기화의 기준으로 사용 가능풀이 문제 태그에는 Dynamic ..
[Leetcode] 21. Merge Two Sorted Lists + 그림 풀이
·
BE/algorithm
문제: Merge Two Sorted Lists관련 토픽: LinkedList, Recursion난이도: Easy 링크  https://leetcode.com/problems/merge-two-sorted-lists요구사항list1, list2 LinkedList를 정렬된 하나의 LinkedList로 합치기 list1, list2는 정렬된 LinkedList return 값의 list는 두 리스트를 기반으로 만든 값이어야 함 조건LinkedList의 노드 길이는 [0, 50]-100 list1, list2는 오름차순 정렬 (non-decreasing) 풀이이미 정렬된 리스트들을 하나로 합치기 위해서는 brute-forcing, LinkedList, recursion을 사용할 수 도 있음 여기에서는 Lin..
[LeetCode] 347. Top K Frequent Elements
·
BE/algorithm
문제 링크 https://leetcode.com/problems/top-k-frequent-elements/description/ Intuition 주어진 array에서 가장 중복이 많은 k개의 element를 결과값으로 반환 그렇다면 정렬하고, 중복을 찾기 위해선 hash를 써야겠군 Approach hash를 쓰기 위해서는 python의 dictionary를 사용 가장 많이 중복되는 element 별로 저장된 dictionary를 그 후에 정렬! 정렬된 중복_숫자_맵 에서 k개의 key값을 반환 dict에서 get()함수는 parameter가 2개! 두번째 param은 optional로 조회하는 key 값이 없는 경우에 반환할 값을 설정 numMap[num] = numMap.get(num,0) → nu..
[LeetCode] 49. Group Anagrams
·
BE/algorithm
문제 링크 https://leetcode.com/problems/group-anagrams/description/ Intuition 동일한 길이를 가지고 동일한 문자열 구성을 가져야 하는 anagram! 그럼 저번에 문제 풀이 했을 때 처럼 set을 사용해서 풀어볼까? 그런데 이 전 문제와 다르게 grouping 해야하는 문제니까 hash 를 써야할듯 Approach 단어가 3글자라고 주어진 input에서 3개 묶음의 단어가 다 있으리라고는 보장 X 있는 element를 기준으로 hash에 저장해서 확인해야함 python에서 hash는? → dictionary! dict의 key 값은 정렬한 값으로 저장 → 모든 element가 정렬된 값을 기준으로 hasKey() operation을 해야하므로 valu..
[LeetCode] 1. Two Sum
·
BE/algorithm
문제 링크 https://leetcode.com/problems/two-sum/description/ Intuition 주어진 array의 element 중에 target 값으로 합의 수가 맞는 조합을 찾아야 하면..모든 element를 합해서 확인해 보자 first + second index element의 합을 확인하고 넘어가야 한다 Approach 당장 생각나는건...outer loop에서는 index 0 부터 좌항에 들어가는 인자를 iterate하고 inner loop에서는 우항에 들어가는 인자를 iterate 해서 둘의 합을 확인하는 방법 Complexity Time complexity: O(N^2) Space complexity: Code class Solution: def twoSum(sel..
[LeetCode] 242. Valid Anagram
·
BE/algorithm
Intuition Anagram은 주어진 문자열의 character를 재배치 했을 때에도 다 같은 구성의 character를 가지는 단어 혹은 문구를 뜻한다고 한다. 그러니 길이가 같아야지? 같은 구성의 character를 가져야하겠네? Approach 같은 구성의 문자를 가진것을 어떻게 비교하면 좋지? 정렬한 후에 같은지 확인하면 효율적이지 않을까 길이가 다른 경우는 먼저 False를 반환 하는게 좋을 것 같다 Complexity Time complexity: O(nlogn) 평균 / W.C (= worst case) 이유는 python의 sorted() 함수는 Timesort라는 정렬 알고리즘을 사용 Timesort 알고리즘이란? insertion sort 와 merge sort의 장점만을 합쳐서 만..