전체 글 104

경로압축의 중요성...

경로 압축과 union by rank(또는 union by size)를 함께 사용하면, 전체 복잡도가 거의 상수 시간(O(α(n)), 여기서 α는 매우 느리게 증가하는 역아커만 함수)로 줄어들기 때문에 매우 효율적이다.static int getParent(int n1) { if (parent[n1] == n1) { return n1; } return parent[n1] = getParent(parent[n1]); } 즉, 트리 탐색 깊이 줄여줘야 함    https://www.acmicpc.net/problem/10775import java.io.*;import java.util.StringTokenizer;public class Main {..

PS/BOJ 2024.10.30

SQL null의 처리

https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  # # -- 코드를 입력하세요WITH LABELED_HISTORY AS ( SELECT (DATEDIFF(END_DATE, START_DATE) + 1) AS DURATION, HISTORY_ID, h.CAR_ID, DAILY_FEE, CAR_TYPE, CASE WHEN (DATEDIFF(END_DATE, START_DATE) + 1) >= 90 THEN '90일 ..

DB 2024.09.06

SQL CTE (Common Table Expression)

https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 특정 컬럼으로 정렬 후,4배인것에서 힌트를 얻어 퍼센테이지로 랭크를 매김     WITH AS (CTE):용도: 복잡한 쿼리를 간결하게 작성하고 재사용할 수 있게 해줍니다.구조:WITH CTE_NAME AS ( SELECT ... FROM ... ) SELECT ... FROM CTE_NAME;CTE는 일반적으로 중간 계산을 저장하고, 메인 쿼리에서 그 결과를 사용할 수 있도록 합니다. 여러 개의 ..

DB 2024.09.05

SQL varray를 RDB에서 쓰는 법 - distinct, bit 연산

rdb에서 배열을 저장하고 싶다면 어떻게 할까?? 프로그래머스 sql문제에 좋은 예시가 있다   다른 테이블을 참조하여 모든 켜진 비트에 해당하는 ID를 찾으려면, 비트 연산을 활용하여 두 테이블을 JOIN해야 합니다. 이 경우, 한 테이블에는 ID와 비트 값(예: permissions), 다른 테이블에는 각 비트의 의미를 정의한 데이터가 포함됩니다.예시 시나리오USERS 테이블: 사용자 ID와 권한(비트 값)이 저장됨PERMISSIONS 테이블: 각 비트의 의미를 정의한 테이블테이블 정의USERS 테이블:id: 사용자 IDname: 사용자 이름permissions: 비트로 표현된 권한 값sql코드 복사CREATE TABLE USERS ( id INT PRIMARY KEY, name VARCHAR(50)..

DB 2024.09.04

SQL in

https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 프로그래머스 > 재구매가 일어난 상품 데이터 in 절 앞에 괄호를 사용하여 한개 이상의 데이터를 동시에 in으로 검색할 수 있다.  -- 코드를 입력하세요SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEWHERE (USER_ID, PRODUCT_ID) IN ( SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY U..

DB 2024.09.04

SQL union all

https://school.programmers.co.kr/learn/courses/30/lessons/131537 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 프로그래머스 오프라인/온라인 판매 데이터 통합하기 left join을 했는데, 오프라인 테이블에는 없는 컬럼이 온라인에 있어서 조인 시 오프라인 구매 데이터는 안 남는다full outer join ?-> rdb는 풀 아우터 조인 없음1) left join, right join, union을 모두 사용하거나2) union all 사용 -- 코드를 입력하세요SELECT SUBSTRING(o.SALES_..

DB 2024.09.04

해시함수와 적용

해시함수를 이용한 비밀번호 저장 및 비교 서비스 DB의 보안성을 보장할 수 없기 때문에, 해시함수를 이용해 비밀번호를 해시화해서 비교해야한다. 적용 알고리즘: 해시함수 알고리즘 개요 2.1. 해시 함수란? 해시 알고리즘이란 어떤 문자열 x가 해시함수 h(x)를 통해 해시화 된 fixed length의 y의 문자열을 만드는 알고리즘을 말한다. 암호화 해시 함수를 사용해서 비밀번호의 무결성과 보안성을 지킬 수 있다. 해시함수의 성질은 다음과 같다. Properties of Cryptographic Hash Functions (암호화 해시함수의 성질) Compression (압축) - 해시 함숫값(출력)의 크기는 평문(입력)의 크기보다 작다. Efficiency (효율성) - 해시 함숫값은 빠르게 계산된다. ..

카테고리 없음 2023.05.12

백준 17471 (Java) 게리맨더링

자세한 풀이: 주석 참고 두 구획에 따른 가중치의 차이는 없으므로 부분집합의 원소의 수가 1이상 n/2 이하인 조합을 고른다. 고른 조합 두개가 나오면, 각각의 조합(red, blue) 에 대해 union-find를 진행한다. 이때 같은 색에 포함되며 인접해있다면 union을 진행한다. 모든 union이 완료되면 각 노드에 대해 탐색을 진행한다. 1. 모두 방문할 수 있는지, 2. 방문했을 때 색이 같다면(union 되어있다면) 같은 부모에 포함되었는지 검사한다. package com; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public cla..

PS/BOJ 2023.02.28

백준 1992 (Java) 쿼드트리

입력 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또는 1의 숫자로 이루어져 있으며, 영상의 각 점들을 나타낸다. 출력 영상을 압축한 결과를 출력한다. 예제 입력 1 복사 8 11110000 11110000 00011100 00011100 11110000 11110000 11110011 11110011 예제 출력 1 복사 ((110(0101))(0010)1(0001)) 해설 size가 2가 될때까지 분할정복을 진행한다. 2가 되었다면 네칸의 합이 4인 경우와 0인 경우는 각각 모든 수가 같은 경우이다. 4또는 0이 아닌 경우는 네칸의 수가 다른 ..

PS/BOJ 2023.02.21

백준 11728 (Java) 배열 합치기

정렬된 두 배열이 들어오므로, 매번 두 배열을 비교하며 앞에서부터 작은 배열의 값을 넣어주면 된다. import java.io.*; import java.lang.reflect.Parameter; import java.util.*; public class Main { static int n, m; static int[] arrA; static int[] arrB; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWrit..

카테고리 없음 2023.02.20