목록Study (268)
전공공부
설명 이전에 같은 문제를 풀었던 이력이 있어서 풀었는데 거의 이전과 동일한 풀이법이 나와서 조금 놀랐다. 트리 형태를 갖추고 해당 노드를 제외하고 리프노드의 갯수를 찾기 위한 로직인데 root가 지워지면 리프노드의 갯수를 셀 수 있는 트리의 형태가 되지 않고 이를 제외한 나머지 경우에서는 깊이 우선 탐색 법으로 탐색을 하면서 찾아서 리프 노드의 갯수를 세는 형식으로 풀었다. 코드 package tree; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class BOJ_106..
설명 단절점과 단절선을 구하는 문제로 다음 블로그를 참고해서 문제를 풀었다. (https://loosie.tistory.com/522) 보니깐, 단절선이 생기는건 무조건 삭제가 되는게 맞고 단절점에 경우에는 아래로 나오는 간선의 갯수가 2개 이상이면 무조건 잘리는 구조다. 단절점이 리프노드이거나 루트 노드가 아니면 단절점으로 쓸 수 있다. 처음에는 실제로 나오는 요청대로 받아서 트리인지 여부를 검사하는 코드를 짜려고 하다가 너무 길어지는 듯해서 이상했는데 이렇게 쉬운 풀이가 있을줄 몰랐다. 생각의 전환이 필요한 듯 하다. 코드 package tree; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arra..
설명 방문 여부를 체크하는 일반적인 그래프의 탐색을 구현하였다. 하지만, visited 처리 중 처음 스타트 지점의 처리를 잘 못해서 result가 이미 셋팅된 경우에는 다시 셋팅을 반복하지 않도록 방문 여부를 체크하지 못한 스타트 지점의 처리를 해주었는데 조금 아쉬운 코드이다. 코드 package tree; import java.util.*; public class BOJ_11725 { static int result[]; static boolean visited[]; static List[] list; public static void main(String[] args) throws Exception{ Scanner sc = new Scanner(System.in); int N = sc.nextInt..
1. TLS CERTIFICATES 개요 : 유저가 서버로 접근시에 tls 인증서가 해당 서버로의 통신이 암호화 되도록합니다. id 및 pw를 보낼때 어떠한 키로 암호화를 진행하고 이를 서버로 보내는데 이때 보낸 서버의 메세지를 해독 할 수 있게 끔 키의 값을 가지고 있어야 합니다. 하지만 대칭키 방식은 해커가 키를 중간에서 탈취 할 수 있으니 최근 보안시에는 비대칭키 방식을 사용하는데요. 설명에 따르면 public lock과 private key로 관리 된다고 생각하면 됩니다. 공공 자물쇠로 뭘 잠그던 private key로만 열 수 있죠. ssh-keygen으로 private key와 public lock을 만듭니다. 그러면 다른 유저가 서버로 접근하려고 하면 어떻게 해야 할까요? 그 다른 유저를 위..
1. Security Primitives (Deprecated) Secure K8S - kube-apiserver가 k8s의 중심이므로 원시적인 보안 형식에서는 apiserver가 1차 방어선으로 제어하는 역할이 됩니다. 누가 API 서버에 접근하는가? - 파일 접근시 유저ID, Password 등등 그들이 API 서버에 접근시 가질 수 있는 권한은? - RBAC, ABAC 등등의 기반으로 접근 권한을 가집니다. 기본적인 인증에 대해서 알아봤습니다. Accounts User 정보는 K8S에서 관리하지 않고 외부의 장치를 이용해서 관리됩니다. 하지만, CertBot과 같은 자동 인가 시스템은 K8S에서 ServiceAccount로 관리 될 수 있습니다. 어찌 됐건 User들은 Kube-apiserver를 ..
1. 트리 트리(Tree)는 계층적인 구조를 표현하는 자료 구조로, 노드와 간선으로 이루어져 있습니다. 트리는 다양한 분야에서 활용되며, 중요성은 데이터 구조와 알고리즘 이론을 이해하는 데 필수적입니다. 2. 트리의 정의 1. 비어 있거나(노드의 개수가 0개), 노드의 개수가 1개 이상이며 방향 간선이 존재함. 2. 사이클이 없음 3. 모두 연결된 연결 그래프임 풀어쓰면 노드 끼리 모두 연결된 그래프이면서 사이클이 존재하지 않고 노드가 V개 일때, 간선이 V - 1인 것이 트리이다. 3. 트리의 구성 요소 노드(Node) 트리의 기본 단위로, 데이터를 저장하는 요소입니다. 각 노드는 값과 부가적인 정보를 가질 수 있습니다. 간선(Edge) 노드들을 연결하는 선으로, 부모 노드와 자식 노드를 연결합니다. ..
설명 트리에 대해서 별도의 이해가 없었고 이때, 문제의 구현을 위한 설명만을 보고 풀었다. 그리고, 설명 게시판을 많이 참고하였는데 이 문제는 들어오는 간선이 1개 이상이고 간선이 아예 없는 루트 노드 하나가 존재하는 것을 찾아야 한다. 그런데 어이가 없던 것이 이렇게 구현을 하고 아무리 돌려도 틀렸습니다가 떠서 질문 게시판을 다시 봤더니 0 0인 케이스도 가능하다고 한다. 즉, 아무 노드가 없을때도 트리가 된다고 한다. 아무리 찾아봐도 잘 모르겠어서 chatGPT를 돌려서 트리에도 공집합 같은 트리가 존재하는지 봤더니 아래와 같은 답변을 얻었다. 더보기 공 트리는 트리가 아무런 노드도 가지고 있지 않은 경우를 가리킵니다. 즉, 노드가 존재하지 않고 아무런 관계도 형성되지 않은 상태를 말합니다. 이는 일..
1. 소프트웨어 아키텍처 검토 헥사고날 아케텍처를 사용하므로써의 이점을 알아야 사용을 하는데 동기부여가 될 것이다. 우선 소프트웨어 아키텍처는 유지 보수가 잘 되어지는 형태로 짜여져야 기술적인 부채를 줄일 수 있다. 그저 동작하는 코드를 짜는 것은 쉽다. 하지만, 소프트웨어 업그레이드가 진행 될 때마다 코드를 다시 유지보수를 진행하고 이때, 아키텍처 구조가 제대로 짜이지 않은 코드는 어색하고 스파게티 코드가 되기 쉽다. 그리고, 대부분의 소프트웨어는 시간이 지날수록 더욱 변경 사항을 추가하고 변경하는 것이 어려워지고 또한, 프론트엔드나 UI가 없이 테스트 케이스를 돌릴 수 있는 코드를 만들기 위해서는 헥사고날 아키텍처가 필요하다고 한다. 2. 헥사고날 아키텍처의 이해 주된 아이디어중 하나는 비지니스 코드..