분류 전체보기(68)
-
[SQL/Oracle] 테이블 생성, 수정, 삭제
Oracle에서 테이블을 관리하는 명령어를 살펴보자. 테이블 생성, 복제 테이블을 생성하는 방식은 다음과 같다. create table 테이블명 ( 컬럼명, 타입 ); account 테이블을 만든다고 가정할 때, 아래와 같이 만들 수 있다. create table account ( id varchar2(20), name varchar2(30), balance number ); 실행 결과 기존에 만들어진 테이블을 복제하거나, 테이블의 일부를 가져와 생성할 수도 있다. 이럴 땐 기존 select-from-where절을 통해 원하는 기준을 설정해 가져오면 된다. 예제를 보며 정리해보자. -- 테이블 복제 create table dept3 as select * from dept2; -- 테이블 일부 복제 cre..
2022.05.18 -
[SQL/Oracle] 쿼리 조건문 - case
CASE 쿼리문을 작성하다 보면 if - else 절과 같은 제어문 형식이 필요할 때가 있다. 그럴때 사용하는 함수가 CASE이다. 제어문에 쓰이는 switch-case문이 연상되는 녀석이군.. 뼈대를 살펴보자. case 조건 When 결과1 then 출력1 When 결과2 then 출력2 ELSE 출력3 end "컬럼명" if문 - when절 실행문 - then else문 - ELSE 짝지어 구분하면 이해하기 편할 것이다. 필자는 조건절이 필요한 쿼리문을 짤 때 실제로 간단한 제어문을 써본 후 구현하기도 한다. Student 테이블에서 tel 컬럼을 지번에 따라 해당 지역을 출력하려고 한다. switch (지번) { case '02' : '서울' break; case '031' : '경기' break;..
2022.05.17 -
[SQL/Oracle] null 치환하기 - NVL(), NVL2()
NVL(column, replace) 테이블을 조인하거나 조회하다 보면 컬럼에 NULL이 들어가는 일은 빈번하다. 그대로 값을 출력할 수도 있지만, 특정 경우에는 NULL값이 들어가면 오류가 생기는 경우가 있다. 그럴때 쓰이는 함수가 NVL이다. NVL(컬럼, 치환할 값) - null값을 다른 값으로 치환 간단한 예제로 살펴보자, 총 급여 (sal + comm 컬럼의 합)을 구하고 싶은 경우, null이 연산에 들어가면 값이 모두 null이 되어버린다. 이럴 때, null을 0으로 치환해보자 select sal, comm, sal+comm, sal+nvl(comm, 0) from emp; 실행 결과는 다음과 같다. 기존 comm이 NULL인 경우, sal과 합산하면 null이 되어버리지만 NVL()함수로..
2022.05.17 -
[프로그래머스] 방의 개수-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49190 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 첫 5단계 문제풀이.. 특별한 알고리즘을 요하지 않지만, 방이 만들어지는 조건과 필요한 변수의 타입을 확실하게 지정해주지 않으면 시간초과나 메모리 초과 이슈가 생긴다. 문제 풀이 먼저, 화살표가 움직인 범위를 사각형(행렬) 기준으로 구해보자. arrows 배열을 쭉 돌며 움직인 방향을 변수에 담는다. 오른쪽 방향이 들어간 화살표(오른쪽 위, 오른쪽, 오른쪽 아래)는 width+1 왼쪽 방향이 들어간 화살표(왼쪽 위, 왼쪽, 왼..
2022.03.23 -
[프로그래머스] 순위-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 풀이 과정 필자는 이 문제를 보고 순서대로 로직을 정리해봤다. 1. 선수별 경기 결과를 인접행렬에 저장한다. 선수 1이 선수 2를 이긴 경우, graph[1][2] = 1, 선수 2가 선수 1에게 졌으니 graph[2][1] = 0이 들어간다. 2. 주어진 경기 결과로 구현한 인접행렬을 바탕으로 확정된 순위를 구한다. 선수가 N명일 때, 선수a가 지고, 이긴 경우를 합쳐 N-1인 경우 해당 선수의 순위를 확정지을 수 있다. ex) 선수 2의 경우, 이긴 경기..
2022.03.19 -
[JAVA] 플로이드-워셜 알고리즘
플로이드-워셜 알고리즘 그래프에서, 한 정점에서 다른 정점으로 가는 최단거리가 있다. 플로이드-워셜 알고리즘을 사용한다면 각각의 모든 정점에서 모든 정점으로 가는 최단거리를 전부 구할 수 있다. 즉, 1 ~ 2, 1 ~ 3, 1 ~ N 2 ~ N 3 ~ N 4 ~ N 5 ~ N 모든 경로에서 전부 최단 거리를 구할 수 있다. 2 -> 1로 가는 최단 경로를 볼 때, 2 -> 1은 9 2 -> 3 -> 1은 7로 노드 3을 거쳐가는 것이 더 빠름 이렇게 노드를 거쳐서 가는게 더 빠른 경로까지도 플루이드-워셜 알고리즘을 통해 구할 수 있다는 것이다. 플로이드-워셜 알고리즘은 DP(Dynamic Programming) 기법을 사용한 알고리즘이다. 즉, 노드 0개를 거쳐가는 최단거리를 구하고, 노드 1개, 노드..
2022.03.19