전체 글 422

[4주차] 강의노트 DML(다중 테이블 쿼리)

2022-03-19 프로그래머스 4주차 강의 1. 3주차 세션 리뷰 1.0. 지난 과제 리뷰 - DB에서 가장 중요한 개념 "JOIN"을 활용하는 문제로 구성됐다. - JOIN을 완벽히 이해해야 서브쿼리 알 수 있다. - 99%의 조인은 PK, FK 사이에서 이뤄진다. - 프로그래밍에서 for반복문이 중첩되서 돌아가는 것과 같다. - where절 조인은 검색 조건과 조인 조건이 섞여 있어서 가능하다면 FROM절 조인을 쓰는 게 좋다. - 과제할 때 WHERE절에 조인 조건을 깜빡해서 오답이 있었다. - LEFT JOIN에 WHERE 절을 적용하면 조인의 의미가 사라진다. -> customers LEFT JOIN payments ... 하면 결제액 없는 고객도 출력 - OUTER JOIN에 WHERE절을 ..

Code up 3102 STL stack

Ex) 첫째줄에 N이 입력된다. (1N개가 입력된다. 출처: https://codeup.kr/problem.php?id=3102 package D220316; import java.util.Scanner; interface IStackble100{ boolean empty(); void push(int nData); int peek(); void pop(); void print(); } public class STL implements IStackble100{ private int[] mnArray; private int mnCapacity; private int mnTop; public STL (int nCapacity) { mnArray = new int[nCapacity]; mnCapacity = ..

깊이 우선 탐색(DFS, Depth-First Search)

1. 깊이 우선 탐색 (DFS, Depth-First Search) - 한 우물부터 깊이 판다. - 스택 이용 Ex) //깊이 우선 탐색 코드 public static void SearchDepthFirst(Node node) { Stack stack = new Stack(); stack.push(node); while(!stack.empty()) {// 스택이 비는 순간 끝 Node next = stack.pop(); System.out.println(next.data);// 방문해서 출력 for(Node child : next.children ) { stack.push(child); } } } 2. 너비 우선 탐색 (BFS, Breadth-First Search) - 여러 우물을 동시에 같은 깊이로 ..

트리, 이진 탐색 트리, 레드-블랙 트리

1. 트리 - 널리 이용되는 자료구조 중 하나 - 나무의 "계층적" 구조를 표현한다. Def) 노트(node): 실제로 저장하는 데이터 Def) 루트(root): 최상위에 위치한 데이터 Def) 리프(leaf): 마지막에 위치한 데이터들 - 부모와 자식 관계(부모는 언제나 하나, 자식은 없거나 여러개 가능) - 높이: 어떤 노드->리프 경로의 최대 길이 -> 부모 기준으로 아래 3개 있으면 높이가 3 - 깊이: 어떤 노드->루트 경로의 길이 -> 자식기준으로 위에 3개 있으면 깊이가 3 - 하위 트리(subtree): 어떤 노드 아래의 모든 것을 포함하는 트리 2. 트리의 용도 - 계층적 데이터를 표현 - 검색트리를 통해 검색 알고리즘 구현 가능 Ex) 트리의 저장법 public class Node{ p..

Code up 1929 재귀함수 우박수 (3n+1) (reverse)

Ex) 우박수 문제 역순으로 출력하기 import java.util.Scanner; public class ReverseCollatz { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m = scan.nextInt(); Reverse(m); System.out.println(m); } public static void Reverse(int n) { if( n % 2 == 1 ) {//홀수일 때 if(n == 1) return; n = 3 * n + 1; Reverse(n); }else {// 짝수일 때 n = n / 2; Reverse(n); } System.out.println(n); } } Note..

Code up 3117 0은 빼!

Ex) 정수k가 입력되고 k줄만큼 숫자들이 입력된다. 마지막에 남은 숫자들의 합을 출력한다. - stack을 이용하여 양수가 입력되면 push(), 0이 입력되면 pop() import java.util.Scanner; interface IStackableZero{ boolean empty(); void pop(); void push(int nData); int peek(); void print(); } public class MinusZero implements IStackableZero{ private int[] mnArray; private int mnTop; private int mnCapacity; public MinusZero(int nCapacity) { mnArray = new int[nC..

Code up 1928 재귀함수 우박수 문제 (basic)

Ex) 입력되는 수 n에 대해 홀수이면 3n + 1, 짝수이면 n / 2 을 출력하는 과정을 반복한다. (n이 1이 될 때까지 ) package D220315; import java.util.Scanner; public class Collatz { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m = scan.nextInt(); CollatzMethod(m); } public static void CollatzMethod(int n) { System.out.println(n); if( n % 2 == 1 ) {//홀수일 때 if(n == 1) return; n = 3 * n + 1; CollatzMet..

Code up 1920 재귀함수를 이용한 2진수 변환

import java.util.Scanner; public class BinanyOperation { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m = scan.nextInt(); if(m == 0) { System.out.println(0); }else { BinanyFunc(m); } } public static void BinanyFunc(int n){ if(n == 0) return; else { BinanyFunc(n / 2); System.out.printf("%d", n % 2); } } }

Chapter 08 DML : 조인 연산을 사용한 검색문 (다중 테이블 검색문)

- WHERE절 조인: INNER JOIN만 제공 - FROM절 조인 1) (INNER) JOIN -> ON절/ USING절 2) NATURAL JOIN 3) LEFT/RIGHT/FULL (OUTER) JOIN -> ON절/ USING절 4) CROSS JOIN - CTAS로 저장 -> ON절 조인을 CTAS로 저장하려면 에러가 난다. (office code가 두 개) -> USING절 조인은 정상 실행된다. (office code가 한 개) - OUTER조인: 조인 조건을 만족하지 않는 투플도 결과에 포함된다. -> FULL [OUTER] JOIN: LEFT 및 RIGHT JOIN 결과의 합집합(UNION) -> MySQL은 FULL [OUTER] JOIN을 지원하지 않는다. - CROSS JOIN: ..