본문 바로가기
반응형

전체 카테고리147

[스택] Leet Code 20. Valid Parentheses 괄호가 제대로 구성되어 있는지 파악하는 문제다. 제대로 구성됐다는 것은 닫는 괄호가 나올 때 제일 최근에 있는 여는 괄호와 매칭된 형태이다. 여는 괄호를 스택에 넣고 닫는 괄호가 나올 때 스택에 있던 값을 pop 하여 괄호가 매칭되는지 확인한다. 괄호가 매칭되지 않는 경우는 1) 닫는 괄호가 여는 괄호가 매칭되지 않거나 "(]" 2) 닫는 괄호는 있지만 여는 괄호가 없거나 "()]" 3) 여는 괄호가 덩그러니 남아있거나 "(()" class Solution: def isValid(self, s: str) -> bool: temp = [] match = {'{':'}', '[':']', '(':')'} # 시간복잡도 O(N) : 하나씩 쭈욱 탐색 O(N) + pop 시간복잡도는 O(1) # 공간복잡도 O(.. 2021. 3. 18.
[재귀호출] 팩토리얼 /피보나치 수열 /순열 시간복잡도 팩토리얼 def factorial(n): if n == 1 || n== 0: return 1 return n * factorial(n - 1) n = 3 print("**팩토리얼") print(factorial(n)) 시간복잡도 O(N) : N번 계산됨 (3*f(2), 2*f(1), 1,*f(0)) 공간복잡도 O(N) : 재귀함수 N번 호출됨 피보나치수열 def fibo(n): if n==1 : return 1 if n==2 : return 1 return fibo(n-1)+fibo(n-2) print("**피보나치수열") print(fibo(n)) 시간복잡도 O(2^N) : 2^N번 연산됨 (f(4)+f(3), f(3)+f(2) f(2)+(1), f(2)+f(1)) 공간복잡도 O(2^N) : 재귀함수 .. 2021. 3. 16.
[Quick Sort] python 퀵정렬 # pivot보다 작은그룹, 큰그룹 분리됨! def partiton(arr,start,end): pivot = arr[(start+end)//2] while start pivot : end -= 1 #pivot보다 큰 값은 건너뛰고 작은 값일 경우 멈춘다. (이따 swap할거야) if start 탐색할 데이터는 반씩 줄어든다 O(logN) 공간복잡도 O(1) 추가 공간이 필요 없다. 아주 깔끔한 설명 영상을 참고했다. 2021. 3. 16.
[이진트리] 순회 & add 정렬되지 않은 이진트리 class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def __str__(self): return f'' class BinaryTree: def __init__(self,node): self.head = node # 트리모양 그대로 (root -> left 서브트리 -> right 서브트리) def preorder(self): if self.head.val is not None: self.__preorder_traverse(self.head) def __preorder_traverse(self, cur): print(cur.val) if.. 2021. 3. 16.
[분할정복] LeetCode 14 - Longest Common Prefix class Solution: def merge(self, left, right): result = "" min_len = min(len(left), len(right)) for i in range(min_len): if left[i] == right[i]: result += left[i] else: return result return result def divideConquer(self, arr, low, high): if low >= high: return arr[low] m = (low + high) // 2 leftStr = self.divideConquer(arr, low, m) rightStr = self.divideConquer(arr, m + 1, high) return self.merge.. 2021. 3. 16.
[Airflow] Airflow 서버에서 S3 접근하기 (S3Hook) python으로 S3Hook을 사용하여 S3에 접근해보자. 그 전에 Airflow 서버에 AWS 인증설정이 되어 있어야 한다. (참고) 그리고 Airflow 서버에서(EC2 사용) S3에 접근권한을 설정해야 한다. IAM에 역할 설정 (EC2 to S3 Access) EC2에 해당 역할 적용 from airflow.hooks.S3_hook import S3Hook bucket = '버켓이름' s3_hook = S3Hook(bucket) #S3 디렉토리 리스팅 keys = s3_hook.list_keys(bucket_name=bucket) # s3에 업로드 s3_key = 'sunnydir/sunnytest.csv' s3_hook.load_file(filename='/var/lib/airflow/test/.. 2021. 3. 13.
반응형