목록분류 전체보기 (270)
전공공부
설명 조합의 경우의 수를 출력하기 위해서 N!/(N-M!)*M! 을 구현하였으며 100C5와 같이 long의 타입 길이를 침범하는 케이스가 존재하여 BigInteger를 이용하여 풀었습니다. 코드 package BOJ.Dynamic_Programming; import java.math.BigInteger; import java.util.Scanner; public class BOJ_2407 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); BigInteger sum = new BigInteger("1"); BigInteger div =..

1. DNS in K8S 사실 위 그림이 해당 편의 핵심이 되는 부분 입니다. 먼저 세모가 Service이고 동그라미는 pod입니다. 우리는 서비스가 모두 pod로 통신하기 위한 네트워킹 객체인것은 알고 있습니다. (실존하는 객체는 아니고 kube-proxy가 내부적으로 일을 합니다.) 잘 살펴보면 우선 Service도 DNS 형태로 접근이 가능한데 이는 ServiceName.namespace.Type(SubDomain).Root의 형태로 지정되어 있습니다. 사실 서비스이름, 네임스페이스는 모두 보시다 싶이 아실 것이고 type 부분부터 살펴보면 type은 해당 DNS를 사용하는 개체의 타입을 의미합니다. 지금 사용되는 service 개체는 svc라는 서브 도메인을 가지고 pod의 경우에는 type을 p..

1. Service Network 동작 원리 Service는 어떻게 내부 사용자 끼리 소통이 가능한 ClusterIP를 가지고 NodePort 등을 통해서 외부와 통신을 할 수 있게 할까요? kube-apiserver가 kubelet을 통해서 각 노드에 접근을 확인 하고 kube-proxy가 만일 pod 등이 추가가 되면 kube-proxy가 이를 알아차리고 알려줍니다. 그러면, 실제로 서비스가 존재하는 객체인가요? 아닙니다. kube-proxy가 포워딩 룰을 가지고 서비스의 각 pod로 가야한다고 알려줍니다. kube-proxy가 IP : PORT - Forward TO를 가지고 이를 서비스라는 개체가 작동 하는 것 처럼 보여준다는 것이죠. 2. Service Network 부 동작 자 그러면 여기서 ..
설명 한방에 통과 할 수 있었는데 처음에 언어 선택을 잘 못 했다가 컴파일 에러를 출력해버린 문제입니다. 정리하고 문제 분석을 해보면 N 노드에서 M 노드까지 연결을 할 수 있는 경우에 수를 출력하면 되는 문제인데요. 이는, N
설명 피보나치 수열을 구현하는 코드입니다. 당연하게도 dynamic programming 방식을 채택했고 0 1 1 2 3 5 8 ... 이전 두 개의 값을 가져와서 현재의 값으로 초기화하는 방식을 그대로 구현해서 사용했습니다. 사실, DP 문제는 아이디어 싸움이라 구현상의 어려움은 없었습니다. 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); long[] dp = new long[n + 1]; dp[0] = 0; if (n > 0) { dp[1] = 1; } for (in..

1. Spring Cloud Netflix Eureka Netflix에서 배포한 오픈 소스입니다. MSA 아키텍쳐를 구성 할 때 Client Side에서 각 서버의 Service를 연동하고 관리하는 것은 한 서버의 서비스 IP 또는, VM IP가 바뀌었을때 마다 대응이 힘들다고 판단하여서 Server 단에서 각 서비스의 IP를 관리하고 이를 사용하는 Client 단에서 각 서비스의 연동하는 name만 가져와서 사용 하게끔 합니다. 마치 K8S 내부의 Service와 같은 개념으로 각 Server를 관리하는데요. 이를 좀 더 유저 친화적으로 사용 할 수 있게끔 구현 한 것 입니다. 2. 서버 구현 Dependancy 등록 아래와 같이 의존성을 추가합니다. implementation 'org.springfr..
설명 이 문제는 플로이드 워셜을 거꾸로 보면 됩니다. 즉, 이미 중간치를 거쳐서 초기화가 된 것인지 파악하면 되는 문제이므로 이를 거꾸로 돌려서 구현합니다. 그리고, 만일 이번에 돌렸는데 최소치가 갱신된다면 이는 모든 최소화된 도로가 연결된 것이 아니므로 조건에 따라서 -1을 출력합니다. 코드 package BOJ.shortest_path; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class BOJ_1507 { public static void main(String[] args) throws Exception{ B..
설명 웜홀 문제는 벨만 포드 알고리즘을 활용한 문제입니다. 누락된 조건 중 모든 그래프가 연결 그래프가 아닐 수 있음을 판단하고 문제를 풀어야 합니다. 그리고, 도로는 양방향이고 웜홀은 단방향임을 명심해야합니다. 그래서, 문제를 풀게 되면 아래와 같은 형태로 작성 할 수 있습니다. 그리고, 음수 사이클이 생기면 시간이 줄어들면서 원래 제자리로 돌아오는 것이니 음수 사이클 여부를 체크하면 됩니다. 코드 package BOJ.shortest_path; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; impo..