본문 바로가기

전체 글

(278)
leetcode - sort Colors 문제 Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue. We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively. You must solve this problem without using the library's sort function. 예시 Example 1: Input: nums = [2,0,2,1,1,0] Outp..
정렬에 관한 정리-2 https://pro-gramm-ing.tistory.com/488 정렬에 관한 정리 - 1 개인적으로 정렬은 코테에서 혹은 개발을 할때 자주 쓰인다고 생각되어서 정렬에 대해 공부를 해두고 싶었다. 그래서 이 기회에 리트코드에 있는 정렬에 대한 글을 보고 정리를 해봤다. 1.정렬 pro-gramm-ing.tistory.com 앞서 비교 기반 정렬을 살펴 보았다. 이번에는 비비교 기반 정렬을 알아보고자 한다. 직관적이거나 만들기 쉽지는 않지만 비교적 실행속도가 빠르고 효율적이다. 비비교 기반 정렬 1. 계산 정렬(Counting Sort) 이 정렬방식은 값을 인덱스와 매핑을 다시 시킨 후 정렬을 하는 방식이다. 계산 정렬은 다음과 같은 상황에서 사용이 가능하다. - 1.배열에 중복적인 요소들이 있는경우 e..
정렬에 관한 정리 - 1 개인적으로 정렬은 코테에서 혹은 개발을 할때 자주 쓰인다고 생각되어서 정렬에 대해 공부를 해두고 싶었다. 그래서 이 기회에 리트코드에 있는 정렬에 대한 글을 보고 정리를 해봤다. 1.정렬의 핵심원리는 무엇일까 정렬의 문제는 어떻게 집합에 있는 아이템들을 순서대로 놓을지이다. 어떤 순서대로 놓을지는 전적으로 비교방법에 따라 달라진다. 정렬의 기초는 각각의 아이템중 공통된 특성들끼리 묶어 재배열하는 것이다. 컴퓨터 공학에서는 순서에 관한 형식이 있다. 그 형식은 다음과 같다. 전제: 만약 아이템이 a 와 b 가 주어졌다면(Law of trichotomy(=삼분법칙)) 1. 아래의 연산 중 하나는 참이어야 한다. a > b | a = b | a < b 2. 그리고 다음과 같은 식이 성립되어야 한다. (tran..
Bulk Insert - Insert 쿼리 최적화 oracle 이나 MySql과 같은 개발환경을 사용하여 개발을 했을때 다량의 데이터를 생성해야 될 때가 있다. Bulk Insert는 편하고 빠르게 다수의 건의 데이터를 넣을때 사용된다. 예시와 함께 MySql을 기준으로 설명을 해보겠다. 1. 테이블 생성 CREATE TABLE BULK_INSERT_SAMPLE (A int, B int, C int); insert 구문을 한건씩 사용하게 된다면 생성이 필요한 개수만큼 쿼리를 실행하게 된다. 하지만 쿼리를 반복하는 만큼 실행하는 것은 자원을 많이 소모하는 작업이며, 작업시간도 조금 더 소요될 수도 있다. 또 도중 Connection에 문제가 생긴다면 그에 따른 문제가 생길 수도 있다. insert into BULK_INSERT_SAMPLE VALUES(1..
[DB] 테이블의 스캔방식 db에서 db오브젝트를 스캔하는 방식에 따라 속도가 차이가 난다는 걸 최근에 알게 되었다. 때문에 정리를 해보고자 한다. 디스크의 접근 방식 1.시퀸셜 액세스 - 물리적으로 인접한 페이지를 순차적으로 읽는 방식이다. - 디스크 헤더의 움직임을 최소하하여 작업시간과 리소스 점유 시간을 줄일 수 있다. 2.랜덤 액세스 - 물리적으로 떨어진 페이지를 임의로 접근하는 방식이다. - 디스크 헤더에 많은 움직임을 요구하기 때문에 접근 시간이 오래걸린다. - 접근 범위를 줄이는 방식으로 튜닝이 필요할 수도 있따. 테이블 스캔방식 1.테이블 풀 스캔 - 인덱스를 거치지 않고 테이블 데이터 처음부터 끝까지 모든것을 스캔하는 방식이다. - where 조건을 기준으로 인덱스가 없을경우 이 스캔방식을 사용한다. - 시퀸셜 액..
PIVOT - 행을 열로 바꾸기 통계페이지와 같은 집계가 필요한 경우 종종 로우를 칼럼으로 바꿔서 출력해야될 경우가 있다. 로우를 칼럼으로 바꾸는 방법을 3개 정도 알아보고자 한다. 1.DECODE 혹은 CASE 문을 사용하는 방법 2.WITH 절을 이용한 방법 3.PIVOT 함수를 이용하는 방법 이 글에서 사용하는 테스트 데이터는 다음과 같다. create table table_score( years varchar(100) ,game_name varchar(100) ,play_level varchar(100) ,rate int ); insert into table_score values ('2023','ez2on','lv14',92); insert into table_score values ('2023','ez2on','lv15',8..
maira db 설치하기 1.maria db 설치파일 받기 마리아 db 다운로드 파일은 이곳에서 받을수 있다. https://mariadb.org/ 초록색으로 표시된 영역에서 version을 선택할 수 있다. 빨간색으로 표시된 영역에서는 Zip파일로 다운받을지 MSI 파일로 다운받을지 성택할 수 있다. Download를 눌러 설치 파일을 받자. 2.설치하기 설치파일을 실행시키면 다음과 같은 화면이 나타난다. Next를 눌러주자 다시한번 Next 설치경로를 설정하고 Next를 누르자 - 다음은 maria db의 최상위 권한을 가진 root 계정의 비밀번호를 설정해야한다. 잊어버리면 안되니 주의하자. - Enable access from remote machines for 'root' user 이 옵션은 localhost 외부 컴퓨..
CONNECT BY 사용하기 CONNECT BY 란 계층형 쿼리를 조회하기 위한 쿼리이다. 다음과 같이 회사 조직도가 있다고 해보자. 조직에는 각 계층이 있다. 각 계층을 A레벨, B레벨 ,C 레벨이라 하겠다. 각 레벨들의 정보들을 기록한 테이블이 다음과 같다고 해보자. 각 row 에는 상위 부서 번호와 해당 부서의 번호가 있고, 부서번호가 만약에 시퀸스값으로 insert 가 된다고 할 때 만약에 조회를 할 때 A레벨부터 B레벨, C레벨 순으로 나오게끔 하고 싶다면 어떻게 해야될까? 단순히 order by 를 하면 레벨별로 나온다고 무조건 장담할 수 없다. 이럴때 사용하는게 계층형 쿼리이다. 1. 계층형 쿼리 오라클에서 계층형 쿼리의 예약어는 START WITH 이다. START WITH - 계층의 루트노드(처음행)로 사용될 행을 ..