목록전체 글 (591)
어흥
문제 링크: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/?envType=study-plan-v2&envId=top-100-liked LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 주의할 점 - 재귀문으로 접근하며, re..
문제 링크: https://leetcode.com/problems/find-the-duplicate-number/description/?envType=study-plan-v2&envId=top-100-liked Find the Duplicate Number - LeetCode Can you solve this real interview question? Find the Duplicate Number - Given an array of integers nums containing n + 1 integers where each integer is in the range [1, n] inclusive. There is only one repeated number in nums, return this repea..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 주의할 점 - 어떤 방식으로 1~배열의 길이 만큼의 원소를 더해서 중복을 제거할지 생각한다 2. 구현 - Set을 통해 중복을 제거하고 Set에는 연속된 부분 수열의 합을 넣는다 - N
문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 주의할 점 - 한 지점부터 다른 지점까지의 최단 거리를 구하는 알고리즘은 대표적으로 다익스트라, 플로이드 와샬, 벨만포드가 존재 이때 N은 최대 10만이다 플로이드 와샬은 O(N^3) → TLE 발생 확률 매우 높아보인다 벨만포드는 간선에 음수가 있을 때 사용하는 다익스트라의 심화버전이지만 현재는 모든 간선에 1이라는 양수값만 있으므로 Pass 결국, 다익스트라 채택 - Sour..
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 주의할 점 - 스택을 이용해서 해결한다 - "((("와 같은 문자열을 처리할 수 있는 방법을 찾는다 2. 구현 - 스택을 사용하며, 현재 문자가 '('가라면 스택에 추가한다 - 현재 문자가 ')'라면 2가지 경우로 나눈다 - 첫째, 스택이 비어있다면 false를 반환한다 - 둘째, 스택이 비어있지 않다면 스택의 원소 1개를 pop 한다 - 문자열 전체를 조회했다면 이제 스택이 비..
장애 처리 우선 장애 감지와 장애 해소 전략을 살펴보자 장애 감지 분산 시스템에선 한 대 서버가 "서버 A 다운"이라고 말해도 서버 A를 장애처리 하지 않는다. 보통 2 대 이상의 서버가 같이 서버 A의 장애를 보고해야 처리한다. 노드간 멀티캐스팅 채널을 구축하는것이 서버 장애를 감지하는 가장 쉬운 방법이지만 서버가 많을때는 비효율적이다. 가십 프로토콜(Gossip Protocol) 같은 분산형 장애 감지를 채택하는 것이 나으며 동작원리는 다음과 같다 - 각 노드는 멤버십 목록을 유지. 멤버십 목록은 멤버ID와 그 박동 카운터 쌍의 목록 - 각 노드는 주기적으로 자신의 박동 카운터를 증가 - 각 노드는 무작위로 선정된 노드들에게 주기적으로 자기 박동 카운터 목록을 보냄 - 박동 카운터 목록을 받은 노드는..
시스템 컴포넌트 - 데이터 파티션 - 데이터 다중화 - 일관성 - 일관성 불일치 해소 - 장애 처리 - 시스템 아키텍처 다이어그램 - 쓰기 경로 - 읽기 경로 데이터 파티션 데이터를 작은 파티션들로 분할한 다음 여러 대 서버에 저장한다. 데이터를 파티션 단위로 나눌 땐 다음 2가지를 고려한다 - 데이터를 여러 서버에 고르게 분산할 수 있는가 - 노드가 추가되거나 삭제될 때 데이터의 이동을 최소화할 수 있는가 5장에서 다룬 안정 해시를 통해 이런 문제를 해결할 수 있다. 우선 서버를 해시링에 배치한다. 어떤 키-값 쌍을 어떤 서버에 저장할지 결정하려면 우선 해당 키를 같은 링 위에 배치하고 시계 방향으로 순회하다 만나는 첫 번째 서버에 저장한다. 안정 해시를 사용해서 데이터를 파티션하면 다음과 같은 장점이..
키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스다. 그리고 저장소에 저장되는 값은 고유 식별자를 키로 가져야 한다. 대표적인 키-값 저장소로 아마존 다이나모, memcached, 레디스가 존재한다. 문제 이해 및 설계 범위 확정 읽기, 쓰기 그리고 메모리 사용량 사이에 어떤 균형을 갖고, 데이터와의 일관성과 가용성 사이에서 타협적 설계를 해야 한다 - 키-값 쌍의 크리는 10KB 이하 - 큰 데이터를 저장할 수 있다 - 높은 가용성을 제공. 시스템은 장애가 있더라도 빨리 응답해야 한다 - 높은 규모 확장성을 제공. 트래픽양에 따라 자동적으로 서버 증설/삭제가 이뤄져야 한다 - 데이터 일관성 수준은 조정이 가능해야 한다 - 응답 지연시간(latency)가 짧아야 한다 단일 서버 키-..