전체 글 170

비교연산자, 관계연산자, 패턴 연산자 실습+ 테이블 스페이스가 저장되는곳. 2021-07-26

우선 비교연산자를 적용해보기 위해선 많은 ROW(레코드) 가 필요하다. 그래서 이전 포스트에서 설명한 쿼리로 레코드를 입력시켜놨다. 여기서 비교 연산자'>'를 통해 PWD가 3보다 큰 레코드 그리고 전화번호가 null 이 아닌 레코드들을 뽑으려 한다. 또한 이전 배운 내용을 응용해서, 출력할때 칼럼명을 이름(회사) 로 별칭 붙여서 출력하려고 한다. SELECT name||'('||id||')' as "이름(회사)" from member where pwd>3 and phone is not null; 이걸 실행하니, 이렇게 나왔다. 여기서 또 알게된 점은 PWD 칼럼은 NVARCHAR 형이라 문자 만 들어가는데 왜 숫자인 3과 비교가 가능하지? 라는 의문을 잠깐 품었지만 어짜피 숫자든 영어든 한글이든 모든 ..

Programming/SQL 2021.07.26

커밋과 롤백, DATE 형 칼럼에 값 insert 하기. 2021-07-23

지난 포스트에서 내가 관련 개념을 설명할 때는, 직접 SQL developer에서 프로그래밍 해 보지는 않았는데, 오늘 직접 해보니, 막연한 개념을 확실히 확인할 수 있었다. **커밋,롤백, 트랜젝션에 대한 자세한 설명은 내 이전포스트 참고바람. 우선 서로다른 세션이 한 저장소에 접근하는것을 보이기 위해 SQL developer를 두번 열었다. 이렇게 연 다음, Session2에서 ID 가 newlec인 레코드의 칼럼을 update 한 뒤 Session1에서 해당 레코드의 칼럼중 하나인 gender에 접근하여 바꾸려 하자 보이는 것처럼 바로 ROCK이 걸렸다. 이유는 Session2가 아직 commit 하지 않았으므로, 해당 레코드에 관한 트랜젝션이 완료되지 않았다고 간주하고, 해당 테이블이 Sessio..

Programming/SQL 2021.07.23

[자바] 백준 11052 카드 구매하기. 2021-07-22

우선 DP 문제를 많이 연습해서 그런지, 처음보다는 문제 풀이 방법이 비교적 쉽게 떠올랐다. 우선 DP[i]=num 의 의미를 정의하고 시작하면 풀이법이 자연스럽게 떠오르기 마련인데, 난 i개를 뽑을때 최댓값 num이라고 정의했다. 그리고 DP[N]과 DP[N-1] 의 관계를 나타내면 끝인데, 내가 dp[1]부터 해본 결과 dp[n]= 두 수를 더해서 n을 만드는 수를 인덱스를 가지는 dp배열의 두 값의 합들중 가장 큰 값, 입력받은 arr[i]과 비교해서 큰 값이였다. 다시 쉽게 풀면 dp[5]를 구하려면, dp[1]+dp[4], dp[2]+dp[3]중 가장 큰 값과 숫자카드팩의 갯수를 한번에 맞출수 있는 arr[i] 의 값중 큰 것이다. 왜냐하면 내가 dp[i]는 i를 뽑을 때 가장 큰 값으로 정의했..

insert, update, delete 쿼리의 실행.2021-07-21

오늘은 오전공부는 SQL로 40분정도 했는데 어짜피 이전에 적었던 포스트라 중복되서 짧게 복습용으로 적겠다. insert into member(id,pwd) values('dragon','111'); insert into member(id,pwd) values('newlec','111'); insert into member(id,pwd) values('dragon','222'); 위 쿼리 실행결과 이렇게 row가 저장된다. update member set pwd='222',name='손오공' where id='dragon' and pwd='111'; delete member where id='dragon' and name is null; 이렇게 쿼리를 실행하면, 같은 dragon id 이지만, 손오공이라..

Programming/SQL 2021.07.21

NVARCHAR, DDL중 ALTER 로 테이블 변경 2021-07-20

이전 포스트에서는, CHAR 형의 파라미터에 들어가는 것은 size나 2 CHAR 처럼 해당 DBMS가 정하고 있는 유니코드의 글자당 바이트 수가 들어갈수 있다고 했다. 이것은 CHAR 나 VARCHAR 만 한정된 것이고 나머지는 다 size 만 들어간다고 알고 있었다. 그러나 오늘 MEMBER 테이블을 수정할 일이 있어서 확인해 보니. 이렇게 되어 있었다. CHAR나 VARCHAR 의 파라미터로 그냥 숫자를 주면, Unicode - 8 인코딩으로 숫자당 1byte 값으로 저장할수 있는 공간이 생기기에, BIRTHDAY나 ID 의 Byte 값은 이해가 됬다. 그런데 PWD 값은 왜 50 CHAR 일까? 분명 nationalcharacterset은 오라클에서 Unicode -16 을 쓰는데, 50 CHAR..

Programming/SQL 2021.07.20

유니코드, 2의보수법, 부동소수점

우선 컴퓨터에 a 라는 문자를 char 형 데이터에 저장한다면, char a= 'a' 이렇게 char형 변수에 저장한다. 그런데 실제로 저장되는 값은 문자 a 에 매치되는 유니코드 값인 65이다. 컴퓨터는 0과 1로 이루어진 이진법 숫자만 저장 가능하기 때문이다. unicode 는 원래 아스키코드, 확장 아스키 코드 처럼 전 세계의 문자 인코딩 방식을 하나로 통합해사 만들어진 체계인데 자바는 Unicode-16 을 쓴다. 이 16의 특징은 영어든 숫자든 한글이든 다 2byte 규격으로 저장한다는 것이다. 단점은 1바이트로 저장가능한 영어조차 2바이트로 저장하니 비효율적이다. 그런데 Unicode- 8 은 영어는 1byte, 한글은 3byte 이렇게 가변적으로 문자를 표현한다. a와 b 가 n의보수관계에 ..

Programming/JAVA 2021.07.19

내가 생각한 알고리즘 문제풀이 유형별 핵심.

DP 1. dp[i] = num 의 정의, i 와 num이 무엇을 의미하는가. 예) dp[i]=num 은 i번째 값이 최대로 연속되서 이어진 수열의 일부분일때, i 번째 까지의 수열의 갯수= num. 2. 마지막항 dp[N] 과 dp[N-1]의 관계. 백트래킹. 1. dfs(시작값, 깊이) 로 dfs식을 만들면 된다. 시작값에 누적합을 적용시키자. 즉, 누적한 값을 다시 시작값에 넣어서 재귀로 돌리자. 누적합은 배열의 형태일수도 있고 수로 += 가 될수도 있다. 2. 다시 경로를 되돌아가기 위한 조건을 dfs 재귀가 끝나는 바로 뒤에 위치시키자. 3.깊이의 종료조건을 생각하자. bfs. 1.수직선이든, 평면이든, 이동가능한 값들을, 배열에 넣어서 한 배열 사이클이 돈 것을 1계층 이동으로 생각하자.

[자바] 백준 14888번 연산자 끼워넣기. 2021-07-08

일단 매우 어려운 문제였다. 백트레킹을 오랜만에 해서 그런지, 아니면 순열, 조합 구하기 같은 기본적인 백트레킹 문제만 풀어봐서 그런지, 알고리즘 큰 틀에서 풀이법은 바로 알았지만, 그걸 구현하지 못하여서 실패했다.. 그나마 이해했는데 마지막에 oper 함수의 값을 다시 올려줘야 하는 이유를 이해하지 못했지만, 내가 기존에 순열 문제를 푼 기억을 되살려 알게 되었다. 풀이는 코드 옆에 주석으로 다 해놨다. 이 문제를 통해 백트레킹의 실제 상황에서의 적용하는 법을 알게 된거 같다. 이 문제의 핵심은 "깊이"우선 탐색을 어떤 식으로 구현할 것인가 인데, 연산자의 인덱스를 연산자 취급을 하고, 연산자의갯수를 한번 쓸떄마다, dfs로 한층 더 깊게 들어가는 구현법이 가장 핵심인거 같다. import java.u..