본문 바로가기

전체 글

(201)
데이터베이스 JOIN의 종류(SQL) Q. JOIN 명령어는 왜 필요한 것일까? 두 개의 테이블이 있을 때, 한 테이블에 대한 쿼리로만으로 원하는 결과값을 얻을 수 없을 때 사용해야 한다. JOIN을 통해서, 두 테이블을 새로운 하나의 테이블로 만들고 쿼리를 통해서 원하는 결과값을 얻어낸다. Q. JOIN의 종류는 무엇이 있을까?
힙 트리란 무엇일까(Max, Min Heap Tree) Q. 힙 트리의 정의는 어떻게 되어있을까? Max Heap Tree의 경우, 모든 부모노드는 자식 노드보다 커야 한다. 따라서, 루트 노드는 모든 노드들보다 큰 상황이다. 반정렬상태를 유지한다고 표현하기도 한다. 힙 트리는 또한 항상 Complete Binary Tree 형태를 이룬다. Binary의 의미는 자식 노드가 2개임을 의미한다. Complete는 트리의 높이가 H일 때, 전체 자식 노드의 개수는 2^(H - 1)보다 같거나 크고, 2^H - 1보다 같거나 작은 것을 의미한다. 따라서 어떤 탐색이든 O(logH)만에 가능하다고 표현하기도 한다. Q. 힙 트리는 어떻게 구현할까? 어떤 부모노드의 인덱스가 i라고 하면, 왼쪽 자식 노드는 2 * i, 오른쪽 자식 노드는 2 * i + 1라고 표현할 ..
네트워크에 서브넷 마스크란 무엇일까?(What, Why) 구글에 서브넷 마스크에 대해서 검색해보니 영 시원치 않아서 직접 작성하게 됐다. Q. 서브넷 마스크란 왜 필요한 것일까? 2개의 패킷을 확인한다고 가정해보자. 2개의 패킷에 대해서 출발지를 확인해보니, 1번 패킷은 출발지가 192.168.0.1 2번 패킷은 출발지가 192.168.0.129 목적지는 모두 192.168.0.10으로 같다고 생각해보자. 네트워크 구성을 생각해보면, 호스트들은 L2 스위치에 연결되며, L2 스위치들은 게이트웨이로 L3 스위치의 IP를 바라보게 된다. 목적지인 192.168.0.10은 판단을 해야 한다. 해당 패킷이 자신과 같은 네트워크인지 혹은 다른 네트워크라면 게이트웨이로 전송해서, 라우팅을 이용해 목적지를 찾도록 해야한다. 네트워크 실무를 접해보지 않은 분이라면 이해가 쉽..
부동소수점 표기 및 소수 이진수 표현하기 소수 이진수 표현에 대해서 생각해보자. (여기서 말하는 소수는, 0.625를 의미) Q. 만약에 십진수 소수 0.625가 있다면, 소수 이진수를 어떻게 구해줘야할까? 입시교육을 받은 사람이라면, 자연수를 이진수로 표기할 때는 2로 나누고, 소수의 이진수를 곱할 때는 2를 곱한다. 0.625가 2진수 101로 표현되는 것은 다들 알고 있다. 두 값이 같다는 것은 101을 십진수로 표기하면, 1/2 + 1/8 = 0.625로 간단하게 검산할 수 있다. 결과보다 과정에 중점을 두려고 한다. 왜 2를 곱하는 과정에서 나오는 값들이 이진수로 쓰이게 되는 것일까? 2를 한번 곱해서 1이 나오는 값은, 1/2가 존재한다. 2를 두번 곱해서 1이 나오는 값은, 1/4가 존재한다. 위의 원리로, 소수점을 2로 곱하는 과..
진수 나누기 입시 과정을 거치면서, 십진수를 특정 N진수로 변환하는 과정을 수없이도 해봤다. 하지만 그 과정이 왜 십진수를 N진수로 변환하는 것인가에 대해서 생각하지 않았다. 이 얘기가 무슨 얘기인지, 아래의 예시를 통해서 조금 더 생각해보자. 11을 이진수로 표기해보자. 우리는 2로 순차적으로 나눠가며, 생기는 몫과 나머지를 이용해서 십진수 11이 이진수 1011로 표기된다는 사실을 알고 있다. 검산 과정을 통해서, 두 값이 같다는 것도 증명할 수 있다. 하지만 결과를 통해서, 그 과정이 옳다는 것을 증명하고 싶지 않고 과정을 통해서 결과가 옳다는 것을 나타내고 싶다. 직관적인 이해를 하고 싶어서, 생각하는 과정을 글로 표현해보려고 한다. 11을 이진수로 표현하는 과정을 생각해보려 한다. 11을 2로 나누면 몫은 ..
[BOJ 6591] 이항 숏다운 # 중간값이 왜 항상 정수인지 생각 # nCk = n-1Ck-1 + n-1Ck로 모든 문제를 풀려고 하지 말기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import java.util.*; import java.lang.*; import java.io.*; class Main { static Scanner sc = new Scanner(System.in); static int n, k; static int[][] dp; static long answer = 1; public static void main (String[] args) throws ..
[알고리즘] Trie 자료구조 Java 코드 기본코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 import java.util.*; import java.lang.*; import java.io.*; public class Main{ static Scanner sc = new Scanner(System.in); static class Trie{ TrieNode root = new TrieNode(); void insert(String key){ root.in..
[Computer Science(CS) 기술면접 준비] 네트워크 / 보안 네트워크 전반적인 개념 velog.io/@tlatldms/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%84%EA%B3%B5%EC%A7%80%EC%8B%9D 네트워크 전공지식 김유성 교수님 교안 + 면접에 나올법한 지식존재 이유: 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상 velog.io OSI 7계층 # 1 Layer(물리적 계층) : 전기적 신호, 허브 # 2 Layer(데이터 링크 계층) : 프레임, 이더넷, L2 스위치 # 3 Layer(네트워크 계층) : 패킷, IP, ARP, ICMP, 라우터, L3 스위치 # 4 Layer(트랜스포트 계층) : 세그먼..