문제 출처 Lv.3 섬 연결하기- JavaScript https://school.programmers.co.kr/learn/courses/30/lessons/42861 문제 설명 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다. 제한 조건 섬의 개수 n은 1 이상 100 이하입니다. costs의 길이는 ((n-1) * n) / 2이하입니다. 임의의 i에 대해, cos..
크루스칼(Kruskal) 알고리즘 크루스칼 알고리즘은 그래프에서 최소 비용 신장 트리를 찾기 위한 알고리즘입니다. 주요 아이디어는 간선의 비용을 기준으로 오름차순 정렬한 후, 가장 작은 비용의 간선부터 연결하되 사이클을 형성하지 않도록 주의하는 것입니다. 아래는 크루스칼 알고리즘의 기본 개념을 사용하여, 그래프에서 최소 비용 신장 트리의 총 비용을 구하는 자바스크립트 함수입니다. class UnionFind { constructor(size) { this.parent = Array.from({ length: size }, (_, index) => index); } find(node) { if (this.parent[node] === node) { return node; } return this.paren..
문제 1 현재 운영중인 eshop-cart-app Pod의 로그를 Kubernetes built-in logging 아키텍처(예:kubectl logs)에 통합하는 로그 스트리밍 사이드카 컨테이너를 운영하시오 - busybox 이미지를 사용하여 price라는 이름의 사이드카 컨테이너를 기존 eshop-cart-app에 추가합니다. - 새 price 컨테이너는 다음과 같은 command를 실행해야 합니다. - /var/log에 마운트 된 볼륨을 사용하여 사이트카 컨테이너에서 로그 파일 cart-app.log를 사용합니다. - eshop-cart-app Pod 와 cart-app 컨테이너를 수정하지 마시오. // eshop-cart-app pod 를 yaml 으로 추출 kubectl get pod eshop..
사이드카 컨테이너 멀티컨테이너 디자인 패턴 중 하나로, 주 컨테이너의 기능을 보완하거나 확장하기 위해 사용되는 보조 컨테이너입니다. 사이드카 패턴은 주로 주 컨테이너의 일부 기능을 분리하거나 추가 기능을 제공하는 데 초점을 맞춥니다. 사이드카 컨테이너의 주요 특징 및 사용 사례 보조 기능 제공: 사이드카 컨테이너는 주 컨테이너가 직접 관련하지 않는 부차적인 기능을 제공합니다. 예를 들어, 로그 수집, 설정 파일 동적 갱신, 로컬 캐시 관리 등이 있습니다. 모듈화 및 재사용성: 사이드카 컨테이너를 사용하면 특정 기능을 모듈화하여 여러 다른 애플리케이션과 공유할 수 있습니다. 이로 인해 중복된 코드나 기능을 줄일 수 있습니다. 분리된 관심사: 주 컨테이너는 핵심 비즈니스 로직에 집중할 수 있으며, 사이드카는..
문제 1 4개의 컨테이너를 동작시키는 eshop-frontend Pod 르 생성하시오. - 작업 클러스터 : k8s - pod image : nginx, redis, memcached, consul // 커멘트 라인에서 여러개의 이미지를 넣을 수 없음 kubectl run eshop-frontend --image=nginx --dry-run=client -o yaml > 3-2.yaml // 3-2.yaml 접속 vi 3-2.yaml // 3-2.yaml 파일 내용을 문제에 맞게 추가 apiVersion: v1 kind: Pod metadata: name: eshop-frontend spec: containers: - image: nginx name: nginx-container - image: redi..
멀티컨테이너 쿠버네티스에서의 멀티컨테이너는 주로 '파드(Pod)'의 컨셉으로 이해됩니다. 파드는 쿠버네티스에서 배포 단위 중 하나이며, 하나 이상의 컨테이너로 구성될 수 있습니다. 여러 컨테이너를 하나의 파드로 묶는 이유와 그 특징, 그리고 사용 사례에 대해 자세히 알아보겠습니다. https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/#creating-a-pod-that-runs-two-containers 파드(Pod)의 기본 개념 파드는 하나 이상의 컨테이너로 구성된 실행 단위입니다. 파드 내의 모든 컨테이너는 같은 네트워크 네임스페이스, IPC 네임스페이스, UTS ..
그리디 알고리즘 (Greedy Algorithm) 그리디 알고리즘은 현재 상황에서 가장 최선의 선택을 하는 방식으로 문제를 해결하는 방법론입니다. 이 알고리즘이 항상 최적의 해를 구하는 것은 아니지만, 특정 문제들에 대해서는 빠르게 근사적인 해답을 찾을 수 있습니다. 예시로 많이 사용되는 거스름돈 문제를 살펴봅시다. 문제: 손님에게 N원을 거슬러주어야 할 때, 가지고 있는 동전의 종류는 500원, 100원, 50원, 10원이며, 손님에게 동전의 개수를 최소로 하여 N원을 거슬러 주어야한다. 동전의 개수를 구하시오. 1. 일반적인 방법 주어진 동전들을 어떤 방식으로든 조합하여 N원을 만들 수 있습니다. 하지만, 그렇게 하면 경우의 수가 많아져서 계산이 오래 걸릴 수 있습니다. 2. 그리디 알고리즘 활용 f..
문제 출처 Lv.2 숫자의 표현 풀이 - JavaScript https://school.programmers.co.kr/learn/courses/30/lessons/12924 문제 설명 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한 조건 n은 10,000 이하의 자연수 입니다. 입출력 예 n result ..
문제 출처 Lv.2 이진 변환 반복하기 - JavaScript https://school.programmers.co.kr/learn/courses/30/lessons/70129 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아..