반응형

Computer science 47

MSA

마이크로서비스 서비스를 비즈니스 경계에 맞게 세분화 서비스 간 통신은 네트워크 호출을 통해 진행 확장 가능하고 회복적이며 유연한 어플리케이션 구성 MSA를 구성하는 주요 Component Config Managerment 서비스의 재빌드/재부팅 없이 설정사항을 반영 Netflix Archaius, Kubernetes Configmap Service Discovery MSA 기반 서비스 배포 시 서비스 검색 및 등록 Netflix Eureka, Kubernetes Service, Istio API Management 클라이언트 접근 요청을 일원화 Netflix Zuul, Kubernetes Ingress Centralized Logging 서비스별 로그의 중앙집중화(ELK Stack) Distributed..

Computer science 2022.12.03

회전 | 반전

사용 언어 파이썬 1. deque의 rotate 메소드 사용 from collections import deque 데큐명.rotate(정수) 음수 : 반시계 양수 : 시계 정수만큼 회전 2. zip 이용 def rotate90(arr) : return list(zip(*arr[::-1])) 3. 2중 for문 def rotated(a): n = len(a)# 행 길이 m = len(a[0])# 열 길이 result = [[0]* n for _ in range(m)] for i in range(n): for j in range(m): result[j][n-i-1] = a[i][j] return result 시계방향 회전 3. 좌우 반전 def reversal(arr) : result = [] for x i..

문자열 비교

# 백준 '2661. 좋은수열' 문제 중에서 for i in range(1, (idx//2)+1) : if s[-i:] == s[-2*i : -i] : return -1 뒤에서부터 길이가 i인 두 문자열을 비교 # 백준 '2661. 좋은수열' 문제 중에서 def check(s) : for i in range(1, (len(s)//2)+1) : leng=i# 길이 start=0 start2=start+i for j in range(len(s)-(leng*2)+1) :# 시작 인덱스 증가 if s[start+j : start+j+leng] == s[start2+j : start2+j+leng] : return False return True 1부터 문자열의 절반까지 반복하며 두 문자열을 비교 start와 s..

Sliding window와 Two pointer algorithm

Sliding window algorithm은 하나의 포인터, 윈도우 사이즈 변수가 필요하다. 윈도우 사이즈는 리스트 안에서 범위다. 아래는 길이가 5(n)인 리스트에서 길이가 3(k)인 연속된 최대 부분합을 구하는 코드다. 윈도우 사이즈(k)가 3을 채운 이후로 start번째 값을 빼주고 새로운 i번째 값을 더한다. arr=[5, 2, -1, 0, 3] n=5 k=3# 윈도우 사이즈 start=0 ans=0 window_sum=0 for i in range(n) : window_sum+=arr[i] if i >= k-1 : ans=max(window_sum, ans) window_sum-=arr[start] start+=1 print(ans) Two pointer algorithm은 두 포인터 star..

비트마스크

비트의 위치가 1이면 켜져 있는 것, 0이면 꺼져 있는 것 🍟 비트마스크를 사용하면 얻는 장점 더 빠른 수행 시간 : O(1) 더 간결한 코드 더 작은 메모리 사용량 연관 배열을 배열로 대체 : map를 int[]로 대체 🦘 비트마스크를 이용한 집합의 구현 N비트 정수 변수는 0부터 N-1까지의 정수 원소를 가질 수 있는 집합이 된다. 원소 i가 집합에 속해 있다면 2^i 비트가 1이다. 상수 0은 공집합 int num=(1

LRU

LRU 알고리즘은 정해진 size만큼 cache가 가득 차고, cache에 없는 페이지가 들어왔을 때 가장 오래된 페이지를 제거하는 알고리즘 운영체제에서 어떤 페이지로 교체할지 결정하는 페이징 기법 중 하나다. Page-hit : 현재 페이지(삽입하려는 페이지)가 메모리에 이미 있을 때 왼쪽에 있을수록 최근에 사용한 페이지다. 다음 두가지를 고려해야한다. 1. 삽입하려는 페이지가 이미 cache에 있다. 이 경우 기존에 있던 페이지를 삭제하고 최신 페이지로 만들어준다. 기존 페이지를 삭제한다. 가장 왼쪽에 신규 페이지를 추가한다. 2. 삽입하려는 페이지가 cache에 없다. cache에 페이지를 추가한다. 정해진 사이즈만큼 캐시가 가득 찼을 경우에는 캐시에서 가장 마지막 페이지를 제거 후 신규 페이지를 ..

Combination(조합)

n개의 원소 중 m개를 선택하는 모든 조합을 찾는 알고리즘을 구현 def make_combination(n, combinations, will_pick) : if will_pick == 0 : print(combinations) return start = combinations[-1] + 1 if combinations else 0 for i in range(start, n) : combinations.append(i) make_combination(n, combinations, will_pick - 1) combinations.pop() n = 4, will_pick=2라면(4개 중에서 2개를 고르기) 결과는 다음과 같다. [0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, ..

반응형