본문 바로가기

전체 글

(162)
인턴 1주차 - Kubernetes 기본 개념 정리 인턴 활동 정리4학년 2학기를 앞두고 있던 여름 방학부터 스타트업에서 백엔드 개발자 인턴을 시작하게 되었다.앞으로 그때 노션에 정리해 놓았던 글을 정리해서 블로그로 옮겨 보려고 한다.입사하고 첫 주에는 Kubernetes와 NestJS를 학습하고, 간단한 실습 과제를 해결해 보는 시간을 가졌다.아래는 쿠버네티스를 처음 접하는 입장에서 구조와 개념을 간단하게 정리한 기록이다.컨테이너컨테이너는 애플리케이션이 실행되는 데 필요한 코드, 설정, 라이브러리 등을 하나로 묶은 실행 환경이다.운영체제 전체를 가상화하는 가상 머신과 달리 컨테이너는 필요한 부분만 가볍게 격리해서 빠르게 실행할 수 있다.환경이 달라도 항상 똑같이 실행되고, 배포나 확장도 간편하다는 점 때문에 인프라 구성에서 기본 단위로 많이 사용된다.P..
섹션 8 DFS, BFS - 1. 합이 같은 부분집합(DFS : 아마존 인터뷰) 📌 문제 설명N개의 원소로 구성된 자연수 집합이 주어진다.이 집합을 서로소인 두 부분집합으로 나누었을 때 각 부분집합의 원소 합이 동일한 경우가 존재하는지 확인하는 프로그램을 작성하라.📝 입력 & 출력입력첫 번째 줄: 자연수 N (1 ≤ N ≤ 10)두 번째 줄: N개의 자연수 (중복 없음)출력조건을 만족하는 부분집합이 존재하면 "YES"존재하지 않으면 "NO"🔹 예제 입력 & 출력예제 입력61 3 5 6 7 10 예제 출력YES💬 설명전체 합 = 32→ {1, 3, 5, 7} 의 합은 16, {6, 10} 의 합도 16→ 두 부분집합으로 나눌 수 있으므로 "YES"💡 해결 방법전체 합을 total이라 할 때두 부분집합이 합이 같으려면 sum(A) + sum(B) = total, 그리고 sum(..
섹션 7 Recursive, Tree, Graph - 14. 그래프최단거리(BFS) 📌 문제 설명방향 그래프가 주어졌을 때 1번 정점에서 시작하여 다른 모든 정점까지의 최단 거리(간선 수)를 출력하는 프로그램을 작성한다.📝 입력 & 출력입력첫 줄: 정점 수 N(1 ≤ N ≤ 20), 간선 수 M다음 M줄: 간선 정보 A B (A → B 방향)출력1번 정점에서 2번 ~ N번 정점까지의 최소 간선 수를 출력각 정점마다 정점 번호 : 최소 거리 형태로 출력🔹 예제 입력 & 출력예제 입력 6 91 31 42 12 53 44 54 66 26 5예제 출력2 : 3 3 : 1 4 : 1 5 : 2 6 : 2💡 해결 방법이 문제는 최단 거리를 구하는 문제이므로 BFS를 사용한다.BFS는 다음과 같은 특징이 있다:루트 노드부터 탐색하면서 가까운 노드부터 먼저 방문큐(Queue)를 사용해 ..
섹션 7 Recursive, Tree, Graph - 12. 경로탐색 (인접리스트) 📌 문제 설명방향 그래프가 주어졌을 때,1번 정점에서 N번 정점으로 가는 모든 경로의 개수를 구하는 프로그램을 작성한다.예를 들어 아래 그래프에서 1 → 5로 가는 경로는 총 6가지다.1 → 2 → 5 1 → 3 → 4 → 2 → 5 1 → 3 → 4 → 5 1 → 4 → 2 → 5 1 → 4 → 5 1 → 2 → 3 → 4 → 5📝 입력 & 출력입력첫 줄에 정점의 수 N(1 ≤ N ≤ 20), 간선의 수 M이 주어진다.다음 M줄에 걸쳐 방향 간선 정보 A B가 주어진다. (A → B)출력1번 정점에서 N번 정점으로 갈 수 있는 모든 경로의 가지 수를 출력한다.🔹 예제 입력 & 출력예제 입력5 91 21 31 42 12 32 53 44 24 5 예제 출력6💡 해결 방법방향 그래프를 인접리..
섹션 7 Recursive, Tree, Graph - 11. 경로탐색 (인접행렬) 📌 문제 설명방향 그래프가 주어졌을 때,1번 정점에서 N번 정점으로 가는 모든 경로의 개수를 구하는 프로그램을 작성한다.예를 들어 아래 그래프에서 1 → 5로 가는 경로는 총 6가지다.1 → 2 → 5 1 → 3 → 4 → 2 → 5 1 → 3 → 4 → 5 1 → 4 → 2 → 5 1 → 4 → 5 1 → 2 → 3 → 4 → 5📝 입력 & 출력입력첫 줄에 정점의 수 N(1 ≤ N ≤ 20), 간선의 수 M이 주어진다.다음 M줄에 걸쳐 방향 간선 정보 A B가 주어진다. (A → B)출력1번 정점에서 N번 정점으로 갈 수 있는 모든 경로의 가지 수를 출력한다.🔹 예제 입력 & 출력예제 입력5 91 21 31 42 12 32 53 44 24 5 예제 출력6💡 해결 방법정점 간 연결 정보를..
섹션 7 Recursive, Tree, Graph - 10. Tree 말단 노드까지의 가장 짧은 경로 📌 문제 설명주어진 이진트리에서 루트 노드(1번)부터 시작해가장 가까운 말단 노드(leaf node) 까지 가는 최단 경로의 길이를 구하는 프로그램을 작성한다.경로의 길이는 "이동한 간선(edge)의 개수"로 계산한다.📝 입력 & 출력입력트리는 코드에서 직접 생성한다.출력루트 노드부터 가장 가까운 말단 노드까지 이동한 간선의 수를 출력한다.🔹 예제 입력 & 출력예제 입력 (트리 구조) 1 / \ 2 3 / \ 4 5 예제 출력1루트(1) → 오른쪽 자식(3)1번 간선만 타면 말단 노드(3)에 도달💡 해결 방법가장 짧은 경로를 구해야 하므로 BFS(넓이우선탐색) 를 사용한다.BFS는 먼저 들어간 노드를 먼저 탐색하기 때문에, 말단 노드를 처음 발견했을 때가 가장..
섹션 7 Recursive, Tree, Graph - 8. 송아지 찾기(BFS : 상태트리탐색) 📌 문제 설명현수가 잃어버린 송아지를 찾기 위해 최소 점프 횟수를 구하는 문제이다.현수는 한 번의 점프로 +1, -1, +5만큼 이동할 수 있고, 송아지는 움직이지 않는다.두 위치가 주어졌을 때, 최소 점프 횟수를 출력한다.📝 입력 & 출력입력첫 번째 줄에 두 정수 S와 E가 주어진다. (1 ≤ S, E ≤ 10,000)S는 현수의 위치, E는 송아지의 위치출력현수가 송아지에게 도달하기 위한 최소 점프 횟수를 출력한다.🔹 예제 입력 & 출력예제 입력5 14 예제 출력3이동 경로: 5 → 6 → 7 → 14또는 5 → 10 → 9 → 14💡 해결 방법이 문제는 최단 거리를 구해야 하므로DFS가 아닌 BFS(넓이우선탐색)를 사용해야 한다.각 위치를 노드, 이동을 간선으로 생각할 수 있다.현재 위치에..
섹션 7 Recursive, Tree, Graph - 7. 이진트리 순회(넓이우선탐색 : 레벨탐색) 📌 문제 설명아래와 같은 이진트리를 레벨 순서대로 탐색하는 프로그램을 작성한다.(넓이우선탐색, BFS 방식으로) 1 / \ 2 3 / \ / \ 4 5 6 7📝 입력 & 출력입력트리를 직접 생성한다. (코드에서 하드코딩)출력트리의 루트 노드부터 시작하여, 같은 레벨의 노드를 왼쪽에서 오른쪽으로 순서대로 출력한다.🔹 예제 입력 & 출력예제 출력0 : 1 1 : 2 3 2 : 4 5 6 7각 줄의 맨 앞 숫자는 레벨(Level) 번호를 의미한다.💡 해결 방법BFS(넓이우선탐색)는 Queue(큐) 자료구조를 사용해 구현한다.루트 노드를 큐에 넣고 시작큐에서 하나씩 꺼내면서 해당 노드를 방문(출력)하고그 노드의 왼쪽 자식, 오른쪽 자식을 큐에 차례로 추가..