본문 바로가기

전체 글101

[DB/MYSQL] SQL 고득점 Kit - SELECT문(1) 해당 글은 프로그래머스의 'SQL 고득점 Kit'을 풀고 작성한 글입니다. https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. FROM - 테이블을 가져옵니다.2. WHERE - 조건에 맞는 행을 필터링합니다.3. GROUP BY - 데이터를 그룹화합니다.4. HAVING - 그룹화된 데이터에 추가 조건을 적용합니다.5. SELECT - 최종 조회할 컬럼을 지정합니다.6. ORDER BY - 결과를 정렬합니다. 1.평균 일일 대여 요금 구하기 (lv.1)문제https://scho.. 2024. 11. 12.
[백준/C++] #14284 간선 이어가기 2 (Dijsktra) 문제https://www.acmicpc.net/problem/14284 풀이간선 정보들 연결리스트로 관리하고, 최단 경로 길이 배열에 저장하고, 최단 경로 구할때 시간복잡도 줄이기 위해 우선순위 큐를 쓰는.. 가장 전형적인 다익스트라 문제였다.다익스트라 문제들은 거의 풀이 형태가 같으니 한번 제대로 익혀놓는걸 추천한다!#include #include #include #define INF 987654321using namespace std;/*특정 정점 s와 t가 연결이 되는 시점에서 간선 추가를 멈출 것s와 t가 연결이 되는 시점의 간선의 가중치의 합이 최소가 되도록 추가하는 간선의 순서를 조정-> 최솟값은? */int n; // 정점의 개수int m; // 간선 리스트의 수int s, t;vector>.. 2024. 11. 11.
[Spring Boot] 로깅이란? 3가지 Logging 방식 소개 위 Spring Boot Logging 공식 문서를 살펴보면, 아래와 같은 문구가 맨 위에 나온다. Spring Boot는 내부 로깅에 Commons Logging을 사용하지만, 실제 로깅 구현체는 사용자가 선택할 수 있도록 열려 있다.  Java Util Logging, Log4j2, Logback에 대한 기본 설정이 제공되는데, 각각의 경우 로거는 기본적으로 콘솔 출력이 사용되며, 선택적으로 파일 출력도 가능하다. 기본적으로, Spring Boot 스타터를 사용하면 Logback이 로깅 프레임워크로 사용된다. 또한, Logback 라우팅이 적절히 구성되어 있어서 Java Util Logging, Commons Logging, Log4J, 또는 SLF4J 를 사용하는 의존 라이브러리들도 문제없이 동작하.. 2024. 11. 11.
[DB/SQL] Cartesian Product, Theata, Equi, Natual, Outer, Semi JOIN의 모든 것 데이터베이스에서 JOIN은 관계형 데이터를 결합하고 유용한 정보를 얻는 데 필수적인 역할을 하는 기능이다. 이번 포스팅에서는 다양한 JOIN 유형과 개념을 상세히 살펴보도록 하겠다. Cartesian Product: 두 집합의 모든 원소를 대응시키는 Tuple 쌍들의 집합이다.예를 들어, 집합 S1과 S2를 Cartesian Product 한다면, 결과는 각 집합 원소의 개수의 곱만큼 Tuple이 생성된다.Join에서 Cartesian Product: JOIN 조건은 FROM 절에 있는 테이블을 모두 Cartesian Product한 후, WHERE 절에 지정된 조건을 만족하는 Tuple만 필터링하는 방식으로 작동한다. 다양한 JOIN 유형1. Theta Join: 일반적인 = 연산이 아닌, !=, >,.. 2024. 11. 11.
[DB/SQL] 데이터 무결성을 유지하기 위해 Assert보다 Check 절을 사용해야 하는 이유 데이터 무결성을 유지하기 위해 데이터베이스 수준에서 CHECK 제약 조건을 사용하는 것이 애플리케이션 코드 내의 assert 문보다 더 효과적이다.  1. 데이터 무결성 보장CHECK 제약 조건은 데이터베이스 레벨에서 동작하므로, 입력되는 데이터가 항상 정의된 조건을 만족하도록 강제한다. 따라서 애플리케이션 외부에서 데이터베이스를 직접 수정하거나, 다양한 클라이언트에서 데이터가 입력되는 경우에도 데이터 무결성이 유지된다.반면 assert 문은 애플리케이션 코드에서만 실행되기 때문에, 데이터베이스에 직접 쿼리로 접근하거나 애플리케이션 외부에서 데이터가 삽입될 때는 무결성을 보장하지 못한다. 2. 중앙 집중적 제약 관리CHECK 제약 조건은 데이터베이스 스키마 정의에 포함되므로, 모든 애플리케이션과 클라이언.. 2024. 11. 11.
[백준/C++] #11057 오르막 수 (DP) 문제https://www.acmicpc.net/problem/11057 풀이1. 팩토리얼 사용해서 integerOverflow 발생한 코드: 팩토리얼을 계산하는 과정에서 숫자가 매우 커지기 때문에 long long으로도 수를 감당할 수 없게 되어 integerOverflow 발생 사용할 수의 개수만큼 0~9중에 고르기 & 마지막 자릿수 제외한 자릿수 중에 어디"까지" 특정 수가 나올지 고르기이렇게 두 로직을 combination으로 계산할 수 있다.  예를 들면, 수의 길이가 4라고 하자. 길이가 4인 수는 숫자 4개 혹은 3개 혹은 2개 혹은 1개로 오르막 수를 구성할 수 있다. 숫자 4개를 이용하는 수를 만들기 위해서는 0~9 수들 중 중복되지 않는 수 4개를 고르고(10 C 4), 마지막 자리를 제.. 2024. 11. 11.
[백준/C++] #1904 01타일 (DP) 문제https://www.acmicpc.net/problem/1904 풀이 (총 소요 21m)1. 시간초과 나는 재귀 풀이: make 함수가 모든 가능한 타일 배열을 만드는 모든 경우를 확인하면서 진행. 즉, 재귀 방식으로 호출되는 모든 부분 문제를 반복적으로 해결하게 되면서 계산량이 매우 커지고 시간 초과가 발생하게 됨.#include#include#define endl "\n"using namespace std;int leng;int num = 0;void make(int length) { if (length == leng) { num++; num %= 15746; return; } else { if (length + 2 > leng;.. 2024. 11. 11.
[Security] The five stages of penetration testing The five stages of penetration testing(The Five Stages of Ethical Hacking)Reconnaissance → 정보 수집Scanning & Enumeration → 시스템 분석Gaining Access → 시스템에 접근Maintaining Access → 권한을 유지Covering Tracks → 공격의 흔적을 숨김 1. Reconnaissance (정찰): 대상 시스템에 대한 정보를 수집하여 보안 취약점을 파악Target Validation (대상 검증) - 중요!!! ex) arp-scanning: 식별된 자산(시스템, 네트워크 등)이 실제로 대상의 인프라에 속하는지 확인의도하지 않은 시스템이나 허가받지 않은 자산에 대한 실수로 인한 상호작용을 방지.. 2024. 11. 8.
[Security/Java] AES 알고리즘 개념 이해 & 구현하기 전공 서적 내용과 강의 내용을 바탕으로 개념을 정리하고, Java로 aes 알고리즘을 구현해보았습니다. AES 알고리즘이란? : AES(Advanced Encryption Standard)는 DES를 대체하는 대칭 키 블록 암호화 알고리즘으로, 128비트 블록 크기와 다양한 키 크기(128비트, 192비트, 256비트)를 지원한다. AES는 여러 라운드를 거쳐 암호화를 수행하며, 각 라운드에서 비트, 바이트, 열 등의 변환을 통해 입력 데이터가 점차 암호화된다. (round의 횟수는 10 / 12 / 14 round로 key size에 따라 정해진다.) 블럭암호란? 평문 블록 전체를 가지고 동일한 길이의 암호문 블록을 생성하는 암/복호화 방식이다. 전형적으로 64 bit 또는 128 bit를 사용한다... 2024. 11. 8.
[DB/SQL] 중첩 질의 보다 JOIN Query가 더 효율적인 이유 데이터베이스를 설계하고 SQL 쿼리를 작성할 때, 동일한 결과를 얻기 위해 중첩 질의(Subquery)와 JOIN 쿼리를 사용하는 두 가지 방법을 고민하는 경우가 있다. 이 두 방식 중 대량의 데이터셋이나 여러 테이블 간의 연결이 많은 경우에 JOIN 쿼리가 더 효율적으로 작동하는 이유를 살펴보자.  1. 중첩 질의(Subquery)란?중첩 질의는 SQL 쿼리 안에 또 다른 쿼리가 중첩된 형태로, 주로 결과 값을 필터링하거나 계산하는 데 사용된다. SELECT nameFROM employeesWHERE department_id = ( SELECT id FROM departments WHERE name = 'HR'); 위 쿼리는 ‘HR’ 부서의 ID를 먼저 찾은 뒤, 해당 ID에 속한 직원.. 2024. 10. 27.
[KAUPC/C++] 차이를 최대로 (Deque/Sliding Window) 문제https://www.codetree.ai/problems/make-dif-max/description 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 구상해당 문제는 특정 window 크기 안의 값들의 최소값, 최댓값을 구해야 하는 문제였다. queue를 이용하여 풀 수도 있지만, deque를 이용한 풀이가 더 효율적이었다. 먼저, 원형으로 이루어져있는 값들을 1차원 배열으로 나타내어서 0번부터 k-1번 원소가 마지막에 한번 더 필요했다. 그래서 배열 마지막에 추가로 넣어주었다. 예를 들어 위 사진과 같은 상태에서 k가 4라고 한다면, 배열을 [7,.. 2024. 9. 10.
[KAUPC/C++] 조상 노드 (DFS) 문제https://www.codetree.ai/problems/node-ancestor/description 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 구상조상 노드의 유무를 파악하는 문제였다. 오랫만에 찐 dfs다운 문제를 만나서 잠깐이지만 좀 설렜다 ㅎㅎ 조상 노드의 유무를 파악하는 방법이 dfs를 이용하는 것이라는 것만 파악했다면 어렵지 않은 문제인데, 해당 과정이 흔하지 않아 처음 봤을땐 어렵게 느껴졌던 것 같다. dfs 과정을 루트(1번 노드)부터 시작하여 재귀적으로 진행하다보면 이것으로 노드간의 부모 자식 유무를 파악할 수 있을 것 같은 .. 2024. 9. 10.