목록분류 전체보기 (271)
전공공부
설명 생각과 달리 예외 상황에서의 처리가 부족해서 시간이 오래걸렸던 문제다. DFS를 간단히 돌면서 카운트하면 될 줄 알았지만 루트가 기가노드일때의 상황을 고려를 충분히 하지 않아서 시간이 걸렸다.(R == idx && list[idx].size() >= 2 일때) 그리고, 기가 노드 속으로 들어 갔을때 거기서 부터 2개 이상의 가지로 나뉠때 카운트를 충분히 고려하지 않아서 처음에 헷갈렸던 문제다. (cnt -= 부분) 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static class Node { int n..

1. TLS in K8S 쿠버네티스는 마스터 노드와 워커 노드로 되어있고 이는 서로 소통합니다. 이때 서로 소통을 하기 위해서 보안이 중요합니다. [Server Certificates for Servers] / [Client Certificates for Clients] 소통을 하는데 이렇게 소통을 하기 위해서는 보안이 중요하다는 말 입니다. 예를 들어서 apiserver와 scheduler끼리 통신을 한다던지요. (Server Certificates for Servers의 경우) 1 - 1) Server Certificates for Servers Kube API Server에는 apiserver.crt (public key) / apiserver.key (private key)가 존재 ETCD Ser..
설명 어떻게 풀지만 정하고 제대로 나아갔으면 쉽게 풀었을텐데 배열의 형태로 자꾸 구현하려고 하니 막혔다. 하지만, 다른 사람들의 풀이법을 알고보니 LinkedList 형태로 풀면 정말 쉽게 풀 수 있는 것이다... 그래서 아래와 같은 형태로 구현하고 진행하면 되는 형태였는데 사실 이건 풀이법을 어떻게 구현할지를 떠올리는 것이 문제의 대부분을 차지 할 것 같다. 조금 쉬운 문제였는데 스스로 풀지 못해서 아쉽다. +) 구현에 도움을 준 블로그 [백준] 5639번: 이진 검색 트리 - JAVA 🔗 문제 링크 BOJ 5639번: 이진 검색 트리 1️⃣ 트리 직접 그리기 📝 풀이 과정 전위 순회의 경우 처음 탐색한 값이 항상 root이기 때문에 먼저 처음 값을 root로 설정해 주었다. 이후 반복문을 돌며 gir..
설명 이전에 같은 문제를 풀었던 이력이 있어서 풀었는데 거의 이전과 동일한 풀이법이 나와서 조금 놀랐다. 트리 형태를 갖추고 해당 노드를 제외하고 리프노드의 갯수를 찾기 위한 로직인데 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를 ..