전체 글 700

데코레이터(decorator)

데코레이터- 특정 함수를 수행하기 전 처리가 필요한 경우 이를 편하게 수행할 수 있게 해줌- 함수 앞에 @와 함께 다른 함수(wrapper)을 선언 예시import timedef decorator(func): def wrapper(*args, **kwargs): start_time = time.perf_counter() func() end_time = time.perf_counter() print("elapsed time:", end_time -start_time) return wrapper@decoratordef hello(): for _ in range(1000): print("hello", end=" ") print()hello()

c++ 자료구조

array- 고정된 크기를 가진 자료구조- 시간복잡도  탐색 : O(1)  삽입/삭제 : O(n)array arr = {1,2,3,4,5}; set - 정의 및 시간복잡도1. setset my_set = {1,2,3,4,5};- 중복을 허용하지 않는 자료구조- red-black tree구조로 되어있어 정렬이 되어있다.- 시간복잡도  탐색 : O(logN)  삽입/삭제 : O(logN) 2. hash set(unordered_set)unordered_set my_unordered_set = {1,2,3,4,5};- 중복을 허용하지 않고 해쉬를 이용하기 때문에 정렬이 되어있지 않지만 탐색, 삽입, 삭제가 O(1)인 자료구조- 시간복잡도 탐색 : O(1) 삽입/삭제 : O(1) 3. multisetmultis..

NULL관련 함수

NVL(col,exp2)col이 null이면 exp2를 반환한다.ex)select nvl(col,"없음")from table NVL2(col, exp1, exp2)col이 값이 있으면 exp1을 반환, 값이 없으면(null이면) exp2를 반환ex)select nvl(job, "직업있음","직업없음")from table nullif(col1,exp)col1이 exp와 같으면 null반환, 다르면 col1을 반환* 특정값을 제외하고싶을 떄 사용ex)--nation컬럼에서 한국만 null로 나온다.select nullif(nation, "한국")from table coalesce(col1,col2,col3...)첫번째로 null이 아닌값을 반환한다.ex)select coalesce(col1, col2, co..

DB/SQL 2024.06.27

[SQL] 날짜 함수

MONTHS_BETWEEN(d1,d2)d1, d2두 날짜의 개월수 차이 반환months_between('22/09/01','22/01/11') => 7.677 ADD_MONTHS(d1,N)d1에 N개월 더함ADD_MONTHS('22/01/31',3) => 22/04/30 NEXT_DAY(d1, 'n요일')d1이후 날짜중 처음으로  n요일이 되는 날짜.next_day('24/06/27','금요일') => 24/06/28' LAST_DAY(d1)D1날짜 월의 마지막 일을 리턴last_day('24/06/27') => 24/06/30 TO_CHAR(date_col, 'format')날짜를 문자로 바꿔주는 함수. 포멧에 따라 다양한 형태로 표현이 가능함.format내용YYYY년도MM월MONTH전체 월 이름MON..

DB/SQL 2024.06.27

[SQL] 문자열 조건 escape

escape?문자열을 검색할때 '%' 혹은 '_'를 이용하여 검색할 떄가 있다.이떄 '%'나 '_'를 특정 기능이 아닌 문자 그 자체로 취급하고 싶을 때 escape를 쓴다. 방법조건절에서 escape의 기준이될 문자열(\)을 정하고,  뒤에  명시해준다.where col_name like '100\%' escape '\' 예시예시1.select *from employeeswhere job_id like 'abc\_def' escape '\';=> '_'가 아무 1글자를 의미하는것이 아니라, 언더바('_')라는 문자 자체로 인식된다. 예시2.select *from employeeswhere percentage like '98\%' escape '8';=>'%'가 아무글자를 의미하는 것이 아니라, 퍼센트..

DB/SQL 2024.06.27

[leetcode] 787 cheapest flight within stops (벨만포드)

문제설명최대로 거칠 수 있는 노드의 수가 제한되어 상태에서 출발지부터 목적자까지 최단거리를 구한다. 예를 들어  아래와 같은 그래프에서 노드0에서 노드3까지 최대 1노드만 거쳐서 갈 수 있는 최단거리는 0->1->3 의 경로로 가는 700이 정답이다.(0->1->2->3 으로 가면 400으로 더 적지만, 이는 두개의 노드를 거쳐야 한다) 문제풀이밸만포드를 이용한다.벨만포드는 음의 가중치가 있는 그래프에서 최단거리를 구할 수 있는 알고리즘인데, 다음과 같은 특징으로 이 문제에서 사용할 수 있다.1. 노드 수 만큼 반복을 진행할 떄,  k번째 반복에서 k번째로 가까운 노드의 최단거리가 찾아짐이 보장된다.2. k보다 더 멀리있는 노드에 대해서는 k개의 노드를 거쳐서 갈 수 있는 최단거리가 찾아짐이 보장된다...

알고리즘/graph 2024.05.03

스칼라 서브쿼리

스칼라 서브쿼리- 오직 한행만 반환하는 select문에 쓰는 서브쿼리- 마치 join의 효과를 볼 수 있다.- ex)table: scoreidnamekormatheng학생 id이름국어점수수학점수영어점수 위와같은 테이블에서 학생별 국어, 수학, 영어점수의 평균을 구하고자 한다면, 다음과 같은 스칼라 서브쿼리를 이용할 수 있다.select id, name (select (kor+math+eng)/3 from score A where A.id=B.id) from score B;=> 서브쿼리에서 (kor+math+eng)/3이 하나의 행씩 반환하여 id가 같은 것에 매핑된다.

DB/SQL 2024.05.02

[java] 상속할때 abstract, interface

추상 클래스(abstract class)- 추상 매소드를 하나라도 가지고 있는 클래스(일반매소드도 가지고 있어도 된다)- 추상클래스를 상속받는 자식 클래스는 반드시 추상 매소드를 재정의(override)해야 한다. (추상매소드 구현부는 작성되어 있지 않다)- 부모 : abstract class 라고 정의- 자식 :extends를 붙인다abstract class Animal { abstract void cry();}class Cat extends Animal { @Override void cry() { System.out.println("wolf"); }}class Dog extends Animal{ @Override void cry() { Syst..

[SQL] DML (update,select,insert,delete)

INSERT* insert는 into를 써준다!(1) insert into (테이블) (컬럼1,컬럼2...) values (데이터1, 데이터2...);insert into emp(empno,ename) values(1000,'임베스트');/* 아래처럼 컬럼을 생략해도 된다. 하지만 이때는 1000이 들어갈 숫자형 컬럼과 '임베스트'가 들어갈문자형 컬럼이 각각 하나씩만 있어야 한다 */insert into emp values(1000, '임베스트'); (2) select 이용하여 insert--dept에서 모든 데이터를 dpet_test에 입력한다insert into dept_test select * from dept;   SELECT(1) select 기본select * --컬럼from emp --테..

DB/SQL 2024.04.30

[minimum height trees] 리트코드 310 그래프 알고리즘

그래프알고리즘 - minium height trees리트코드 310번 minimum height trees, 그래프 알고리즘 문제트리가 주어질 때 최소자식래밸을 가지는 루트노드를 모드 찾는다.ex1)위와 같은 트리에서, 최소 자식레벨(2)을 가지는 루트노드는 1 ex2)위와 같은 트리에선, 최소 자식래밸을(2)를 가지는 루트노드는 3,4. 나머지 노드가 루트노드가 되면 래밸 3이상을 가지게 된다. 풀이이 문제의 핵심은 leaf노드들 부터 하나씩 없애 주는 것이다.그렇다면 리프노드는 어떻게 알 수 있는가?바로 모든 노드들에 대해서 연결된 노드의 개수를 저장하는 리스트(indegree)를 만들고, 연결된 노드가 1이 leaf노드가 된다.이렇게 하나씩 없애주다가 마지막으로 삭제되는 노드들이 정답노드가 된다.따..

알고리즘/graph 2024.04.26

[leetcode] 685. Redundant Connection II

문제해석리트코드 685번 문제.rooted tree를 만들기위해 어떤 edge를 제거해야 하는가? (입력값은 항상 rooted tree에서 간선하나가 더 추가된 상태로 들어옴. 만약 제거할 수 있는 edge가 여러개 있다면 입력으로 늦게들어온 edge를 제거함)* rooted tree ? : 루트노드를 제외한 모든 노드가 하나의 부모만을 가지는 트리 생각의 오류처음엔 단순히 유향그래프의 사이클 발견즉시 해당 edge를 정답으로 찾는 알고리즘을 생각했다. 하지만 해당 방법으로는 아래와 같이 사이클이 없는 그래프에서 정답을 찾지 못한다(실제로는 1->3 or 2->3 edge중 나중에 들어온 edge를 찾아야 한다)따라서 이 문제는 문제의 조건을 이용하여 문제를 새롭게 정의해서 알고리즘을 ..

알고리즘/graph 2024.04.23