본문 바로가기

반응형

전체 글

(124)
대규모 트래픽에 대응하는 시스템 디자인 최근 알고리즘 동아리 알파벳에서 서비스하고있는 깃허브 프로필 벳지에 대해 곰곰히 생각해보았습니다. 얼마 안되는 요청에 대해서는 아무 문제없이 잘 동작하겠지만, 대규모 요청에 대해서도 생각처럼 동작할까?라는 주제로 이런 저런 생각을 했습니다. 생각에 꼬리를 물고 여러 문제점들이 예상되었고, 적당한 대응방안이 나오긴 했지만 만족스럽지 않았습니다. 또한 제가 많이 부족하여 근본적인 해결책이 나오질 않았습니다. 오늘부터 이 글을 보고 차근차근 생각을 정리해보려 합니다. 당장 아기자기하고 예쁜 서비스를 제공하는 것 만큼이나 안정적이고 확장성있는 서비스를 제공하는 것도 중요하다고 생각합니다. 별 영양가도 없는 긴 글 읽어 주셔서 감사합니다.
정렬 정당성 증명 loop invariant를 이용한 정렬 알고리즘 정당성 증명 삽입 정렬 초기: arr[:1]은 정렬 되어 있다 유지: loop가 끝나면 arr[:i] 정렬되어있다. 종료: arr 정렬되어있다 버블 정렬 초기: arr[n-1:n] 정렬되어있다 유지: loop 끝나면 arr[i:n] 정렬되어있다 종료: arr 정렬 3273 두 수의 합 투포인터 정당성 증명 배열 arr이 정렬된 상태 int s = 0, e = n-1; for (int i = 0; i x임으로 ..
BOJ 문제풀이 (W22) 10806 부분합 투포인터를 사용하여 답을 갱신해주면 됩니다. 다만 이 문제에서 중요한 점은 후에 따로 글로도 쓸 주제이지만 loop invariant입니다. 각각의 원소에 대해서 그 원소를 끝으로 할 때, 합이 s이상이 되게하는 가장 인덱스가 큰 시작지점을 찾아 주는 반복문을 하나 넣어 loop invariant를 설정하면 됩니다. while (start+1=s) { sum-=arr[start]; start++; } 1992 쿼드 트리 대표적인 분할정복 문제입니다. 주어진 배열을 4등분하여 분할정복을 돌아주면 됩니다. 인덱스 슬라이싱 할 때 거리를 따로 구해서 슬라이싱해야하는 점이 구현의 팁입니다. 17626 four squares 1개일때, 2개일때, 3개일때 까지는 그냥 반복문으로 처리해주면 됩니다..

반응형