전체 글 682

[AWS] VPC와 Subnet 이해하기 ( + CIDR )

VPC( Virtual Private Cloud ) VPC란 Virtual Private Cloud로 가상으로 격리된 네트워크 환경을 의미한다. 서울이라는 Region안에 여러 개의 Availability Zone이 나누어져 있다. Availability Zone은 논리적인 데이터센터를 의미하는데, 하나의 데이터센터에 문제가 생기면 다른 데이터센터에 접근이 가능하여 안정적인 운영이 가능해진다. Availability Zone은 분리되어 있지만 하나의 네트워크 환경으로 묶여야 한다. 그래서 가상으로 격리된 네트워크 환경을 만드는데, 그것이 VPC(Virtual Private Cloud)이다. VPC의 cidr은 10.10.0.0/16이다. 이는 서브넷 마스크 11111111 11111111 00000000..

Ops/PublicCloud 2023.11.02

[PS] BOJ20055 컨베이어 벨트 위의 로봇 ( inplementation ) with JAVA

20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net ◎ 문제풀이 문제이해력과 구현력이 필요한 문제였다. 자료구조는 2개를 만들어 준다. 1) 컨베이어 벨트 ( int 배열 , 내구도 ) 2) 로봇위치 ( boolean 배열, 로봇 존재 여부 ) 문제에 주어진 단계에 따라 차근히 구현하면 된다. 1) 벨트 이동하기 벨트가 한 칸 움직일때마다, 우측으로 값을 복사한다. 맨끝은 가장 처음으로 복사한다. 벨트 자료구조를 우측으로 값을 복사하였다. 벨트 위에 있는 로봇도 함께 우측으로 이동한다. 2) ..

문제풀이 2023.10.26

[PS] BOJ12919 A와B 2 ( String, DFS ) with JAVA

12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net ◎ 문제풀이 문제를 보고 DFS 알고리즘을 잘 떠올렸으나 시간초과가 발생하였다. Source를 Target으로 만들기 위해 DFS로 모든 경우를 탐색하였다. 문제를 풀면서도 시간초과를 예상하기는 했다. Source 끝에 A를 추가하거나 Source 끝에 B를 추가하거 뒤집어야 한다. Source와 Target의 길이 차이만큼 경우의 수는 2ⁿ 으로 늘어난다. Target의 최대길이가 50이므로 경우의 수는 2의 49승까지 ..

문제풀이 2023.10.20

[PS] BOJ1522 문자열교환 ( SlidingWindow ) with JAVA

1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net ◎ 문제풀이 슬라이딩 윈도우 알고리즘을 알고 있으면 쉽게 풀리는 문제이다. ( 나는 모르고 있어서 해매었다.. ㄷ ) 문제의 목적은 aaa 연속, bbb 연속으로 만드는 것이다. a의 개수는 3개이다. 그럼 윈도우의 크기도 3이다. 3의 크기로 하나씩 비교하며 a로 바꾸어야 하는 b의 개수의 최솟값을 구하면 된다. a로 바꾸어야 하는 b는 1개이다. 그럼 오른쪽으로 한칸 슬라이딩 해보자. a로 바꾸어야 하는 b는 1개이다. 그럼 오른쪽으로 슬라이딩 해보자. a로 바..

문제풀이 2023.10.19

[PS] BOJ15989 1,2,3 더하기4 ( dp ) with JAVA

15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net ◎ 문제풀이 문제를 보고 DP를 떠올렸으나 '순서만 다른 것은 같은 것으로 본다'는 조건이 어려웠다. 순서만 다른 정렬을 같게 만들려면 오름차순으로 정렬하면 된다. +1 로 끝난 식 뒤에는 +1만 올 수 있고 +2로 끝난 식 뒤에는 +1, +2만 올 수 있고 +3으로 끝난 식 뒤에는 +1, +2, +3만 올 수 있다. 예를 들어 dp[4][1] : 4를 만드는데 끝이 1인 경우의 수이다. dp[4][2..

문제풀이 2023.10.18

[Kubernetes] NFS 서버에 PV 만들어 접근하기 ( 우분투 환경 )

컨테이너가 내려갔다가 올라오면 컨테이너 내부 데이터는 사라진다. 데이터를 유지하려면 외부스토리지에 마운트하여 데이터를 저장해야 한다. 클러스터 내부 저장소에 마운트하면 컨테이너 생명주기와 클러스터 생명주기가 다르므로 데이터가 유지될 수 있다. 그러나 클러스터가 내려가면 데이터 역시 사라진다. 클러스터 상태와 무관하게 데이터를 유지하려면 클러스터 외부의 스토리지에 컨테이너가 마운트 되어야 한다. 이번 포스팅에서는 MiniKube 클러스터 밖에 NFS 서버(외부스토리지)를 구성하여 클러스터 밖의 저장소와 데이터를 공유하는 과정을 다루어 보겠다. 우분투OS 로컬환경에 MiniKube와 NFS 서버를 띄어 실습을 진행해보겠다. NFS 서버 생성하기 ( 우분투 환경 ) $ sudo apt-get update $ ..

Ops/Kubernetes 2023.10.16

[Kubernetes] MySQL PV, PVC 적용하기

[Kubernetes] MySQL 서비스 및 디플로이먼트 생성하기 [Kubernetes] 프론트엔드, 백엔드 서비스 및 디플로이먼트 생성하기 [Kubernetes] Minikube 설치 및 인그레스 설치 및 설정하기 [Docker] Nginx - React - Nodejs - Mysql 연동 실습하기 이번 포스팅에서 구현할 시스 lordofkangs.tistory.com 지난 포스팅까지 간단한 풀스택 시스템을 쿠버네티스에 클러스터 적용해보았다. MySQL DB에 데이터를 입력하고 조회까지 하였지만 컨테이너를 내렸다고 올리면 데이터가 모두 사라져 버린다. 컨테이너를 노드 안의 외부볼륨에 마운트 하면 컨테이너가 내려가더라도 데이터를 유지할 수 있다. GitHub - mgKang3646/Goorm_Practi..

Ops/Kubernetes 2023.10.16

[Kubernetes] ClusterIP, NodePort, LoadBalancer의 차이

쿠버네티스에서 가장 많이 사용하는 서비스(Service) 유형에는 3가지가 있다. 1. ClusterIP 2. NodePort 3. LoadBalancer 3가지가 어떤 역할을 하는지를 알아보기 전에, 먼저 간략히 IP와 Port 개념을 알아보자. IP는 네트워크상의 특정 노드를 가리키는 주소이다. 그리고 Port는 노드 안에 존재하는 여러가지 서비스의 창구이다. 그러므로 하나의 노드는 하나의 IP와 여러 개의 Port를 갖는다. Port는 16비트로 이루어져있고 0~65535까지 존재한다. 쿠버네티스 클러스터 안에는 여러 오브젝트가 존재하는데, IP가 부여되어 하나의 노드로써 역할을 한다. 서비스(Service)도 IP가 부여되는 클러스터 내 오브젝트이다. 서비스는 하나의 IP와 여러 개의 포트를 가지..

Ops/Kubernetes 2023.10.13

[Kubernetes] MySQL 서비스 및 디플로이먼트 생성하기

[Kubernetes] 프론트엔드, 백엔드 서비스 및 디플로이먼트 생성하기 [Kubernetes] Minikube 설치 및 인그레스 설치 및 설정하기 [Docker] Nginx - React - Nodejs - Mysql 연동 실습하기 이번 포스팅에서 구현할 시스템의 구성도는 위와 같다. Ngnix, React, NodeJS, MySQL을 도커 컨테이너 lordofkangs.tistory.com 지난 포스팅에서 미니큐브로 구성한 쿠버네티스 클러스터에 프론트엔드, 백엔드 서비스 및 디플로이먼트를 생성해보았다. 이번 포스팅에서는 MySQL 서비스 및 디플로이먼트를 생성하여 백엔드와 연동시켜보겠다. MySQL 서비스 ( Service ) mysql-service.yaml apiVersion: v1 kind: ..

Ops/Kubernetes 2023.10.13

[PS] BOJ1613 역사 ( Floyd-Warshall ) with JAVA

1613번: 역사 첫째 줄에 첫 줄에 사건의 개수 n(400 이하의 자연수)과 알고 있는 사건의 전후 관계의 개수 k(50,000 이하의 자연수)가 주어진다. 다음 k줄에는 전후 관계를 알고 있는 두 사건의 번호가 주어진다. www.acmicpc.net ◎ 문제풀이 사건의 전후관계라는 말에서 Floyd-Warshall 알고리즘을 떠올릴 수 있어야 한다. Floyd-Warshall은 A->B를 가고 B->C를 갈 수 있으면 A->C를 갈 수 있다는 원리를 적용하여 최단경로를 구하는 알고리즘이다. A사건 후 B사건이 발생하고 B사건 후 C사건이 발생하면 A사건 후 C사건이 발생한다. 이것이 성립한다면 B사건 전 A사건이 발생하고 C사건 전 B사건이 발생하면 C사건 전 A사건이 발생함을 의미하기도 한다. 이런..

문제풀이 2023.10.13