목록Study (268)
전공공부
설명 기본 DP문제로 워밍업 용으로 좋은 문제 인 것 같습니다. 문제에서 주어진 파스칼의 삼각형 공식을 사용했으며 (오른쪽 위 왼쪽 위를 더하면 아래의 조합 경우의 수가 나옴) 이때, 문제에서 주어진 삼각형의 경우의 수만큼 더했습니다. 코드 package BOJ.Dynamic_Programming; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_15489 { public static void main(String[] args) throws Exception{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String[] ..
설명 푸는데 걸린 시간은 매우 짧았지만 고민을 하면서 이 코드가 맞을지 확신을 가지지 못한채로 풀이를 진행했던 문제입니다. DP가 아직 익숙치 않으니 점화식을 짜는 것이 어색합니다. 빅 점프를 한 번만 할 수 있으므로 모든 경우에서 빅점프를 할 수 있는 경우를 열어 두고 빅 점프 이후에 다시 DP를 초기화하면서 점프에 대한 초기화를 진행하였습니다. N이 20이라 가능 한 경우이지 이렇게 매번 초기화 하는 방법 보다 index 값을 넘겨줘서 해당 index 이후로 부터만 보면 된다는 최적화식을 세울 수 도 있을 것이고 다른 좋은 방법이 있을겁니다. 코드 package BOJ.Dynamic_Programming; import java.io.BufferedReader; import java.io.IOExcep..
설명 계단 오르기 문제와 유사하다고 생각이 들었고 정말로 비슷하게 점화식을 수행하였습니다. 다만, Case가 연속된 3 Case를 구현하여야 하기 때문에 이전의 한 계단, 두 계단만 고려하던 연속적인 부분을 3케이스로 나누어서 선택하였습니다. 하나는 모두 3개를 선택하는 경우, 이전의 연속된 2개만 선택하는 경우, 현재 케이스를 스킵합니다. 헷갈릴 수 있는 부분이 제가 wine 배열은 N 개로 짜서 코드를 볼 때 인덱스 위치가 다르다는걸 감안해주셔야 합니다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * 계단 오르기 문제와 비슷하여 접근이 쉬웠습니다. */ p..
설명 아래 또는 오른쪽로만 움직일 수 있는 경우로 고정 되어 있습니다. 따라서, 점화식을 2차원 배열로 만들기 쉬운데요. dp를 해당 케이스로 가는 경우의 수로 고려하고 문제를 풀이를 시도하면 쉽게 세울 수 있는 DP 문제이나 처음에 점화식을 생각해내는 것이 역시 어렵습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ_1890 { public static void main(String[] args) throws IOException { BufferedReader in = new Buffe..

1. What is Ingress 인그레스는 무엇일까요? 예시로 application을 Deployment로 만들어 두고 NodePort로 구성한 Service와 연결해서 사용하면 바깥에서 접근 가능한 application을 만들 수 있습니다.자 그렇다면 실제로 우리가 사용 할 때 노드 포트 IP로 접근하고 포트 번호를 쳐서 웹 서버에서 접근 하나요? 당연히 아니죠. http://test.com 이런식으로 사용하게 되죠. 실제로는 GCP를 사용하면 Service에 LoadBalancer 케이스로 지정하고 gcp LB를 통해서 들어오게 됩니다. 그렇다면 API를 여기에 더해서 쓰면 어떻게 해야하죠? 그리고, Spring Cloud Gateway로 나눠진 MicroService는 어떻게 해야 할까요? 각각을..

1. What is API Gateway? CNCF에서도 제시한 표준 MSA 구성 요소중 하나인 Gateway Pattern에 대해서 깊게 알아보려고 합니다. DDD 기반으로 MSA를 구성 하게 된다면 필히 이런 생각이 나실 겁니다. 서비스 별로 모든 역할을 나누는 건 알겠는데 이거 어떻게 나눠서 공통 인가처리를 하지..? 저도 처음 개인 프로젝트를 진행해보면서 JWT Token 인가처리 과정을 모든 Service에서 거쳐가야 하는데 이걸 모든 서비스에 둬서 체크를 해야 하나 싶었습니다. 하지만, 마이크로서비스를 구성 할 때 이런 부분을 모두 천재적인 선배 개발자 분들이 생각하고 만드셨습니다. API Gateway를 두고 사용하면 됩니다. 위 그림은 제가 실제로 구성중인 개인 프로젝트의 대략적인 구조를 ..
설명 조합의 경우의 수를 출력하기 위해서 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..