![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cn95d8/btq1QnOvMbQ/3cEKQDPbdXLX6hu6CF07J0/img.png)
Oracle의 JDBC 라이브러리를 활용하여 JAVA에서 DBMS를 조작할 수 있다. 하지만 그 전에 데이터베이스 연동에 꼭 필요한 OracleDriver 클래스의 위치를 정확하게 파악하고 있어야 한다. JAVA에서 Database에 접속하는 순서는 다음과 같다. 더보기 1) 드라이버 로딩: "oracle.jdbc.driver.OracleDriver" 2) 드라이버 매니저를 이용하여 DB에 접속하고, Connection객체 가져오기 접속 주소: "jdbc:oracle:thin:@127.0.0.1:1521:XE" Connection 객체: Connection conn = DriverManager.getConnection(url, "name", pwd"); 3) SQL 명령어를 실행시키기 위한 객체 생성 -..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/rvpmY/btq1Qm2HFYy/CULcahkKnGHYM2tQlKEmw0/img.png)
우선 DB를 들어가는 첫날인 만큼 간단한 DBMS 조작이 몇 개만 다루고 넘어가도록 하려고 한다. (이 포스팅은 Oracle 설치 과정은 설명하지 않습니다.) DBMS의 설치가 모두 끝난 뒤에는 SQL Command Line을 이용하여 DBMS의 조작이 가능하다. 1. 아직 사용자의 계정을 생성하지 않았기 때문에 시스템 계정으로 오라클에 접속해야 한다. -> conn sys as sysdba을 해준 뒤, 설치할 때 지정해놨던 비밀번호를 입력하면 오라클에 접속할 수 있다. 2. 시스템 권한으로 접속을 했으면, DBMS 사용자의 계정을 생성해야 한다. 3. 권한 설정 -> GRANT 명령어로 시스템의 권한으로 해당 DBMS 사용자가 가질 수 있는 권한을 설정해준다. 이때, Connect : 접속 권한, re..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/MDEdN/btq1V1JEjsP/iK75knIPeZotNwYWJkgBg1/img.png)
이 문제를 오늘 오전 8시부터 보고 풀기 시작했는데... 처음에는 "17"이라는 문자열이 들어오면, 1부터 17까지의 소수의 개수를 구하는 문제라고 덜컥 생각하고 풀어버려서... 오전 풀이 시간을 날려버렸다... 하하.. 문제는 항상 2번씩 읽읍시다. 본질은 "17"이라는 문자열을 받으면 받은 문자열을 한자리 숫자로 쪼갠 뒤, 만들 수 있는 모든 숫자 조합에서 소수를 찾는 문제이다. 즉, 받은 문자열을 쪼개고, 배열에 넣은 뒤 수열을 구하여 풀어야한다. 수열을 만드는 알고리즘은 직전 포스팅에서 열심히 구현해 놨으니, 이제 쓰기만 하면 된다. package com.choonham; import java.util.ArrayList; import java.util.HashSet; import java.util..
완전 탐색 알고리즘에서 임의의 숫자로 되어있는 문자열을 준 뒤, 이 문자열에서 조합이 가능한 경우의 수를 뽑는 문제가 자주 나오는 것 같다. LV2 문제를 풀다가 도저히 선정리 없이는 풀기가 힘들고, 입사 코딩 테스트에도 등장할 개념 같아서 자세하게 다루고 넘어가려고 한다. {1,2,3,4,5,6,7}의 배열을 가지고 3자리의 수를 전부 뽑는다고 가정하면, {1, 2, 3}과 {3, 2, 1}을 같은 경우로 생각하냐 마냐의 2가지 경우로 나눌 수 있다. 1. 중복을 허용하는 수열 뽑기 수열은 123을 뽑는 경우와 321을 뽑는 건 다르다고 생각하는 경우이다. 즉, {1,2,3,4,5,6,7} 중 3개를 뽑는 "모든" 경우의 수를 구하는 개념이다. 재귀함수를 이용하여 코드를 작성하면, private sta..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/eq0UYw/btq1Jz9o3kq/GOBbXA1TkSTYxRnzvK2kG1/img.png)
완전 탐색을 푸는 첫날인데, 아침부터 굉장히 마음에 드는 문구를 봤다. 네, 무식한 게 최곱니다. ㅎㅎ 가끔 무지성으로 푼 풀이가 딱 들어맞으면, 그거만큼 기분 좋은 게 없어요. 아무튼, 문제로 들어가면 수포자 1, 2, 3 의 찍는 패턴을 배열로 저장한 뒤에 인자로 받은 정답의 배열과 하나하나 비교하여, 각자 몇 문제를 맞혔는지 확인하면 되는 문제이다. 사실 완전 탐색은 말 그대로, 모든 경우의 수를 다 탐색하면 끝인 문제들이라, 효율적인 검색 방법을 찾는 것을 제외하고는 딱히 복잡하게 생각할 게 없는 거 같다. 나머지 연산과 문제를 가장 많이 맞힌 1등 수포자 여러 명일 수도 있는 경우를 생각하여 코드를 작성하면 된다. package com.choonham; import java.util.ArrayL..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/ceTnew/btq1KcFfAMJ/OioQG3AZwtNE1znTz8v2tk/img.png)
"생각보다 간단했다." 고 말할 뻔했다. 인용 횟수를 저장할 h와 해당 h값보다 큰 인용 횟수를 가진 정수의 개수를 가지는 n을 선언해준 뒤, citations 배열을 오름차순 정렬해주고, h 값에 해당하는 iterator를 ciataions의 길이에 빼주면 h보다 큰 수의 개수를 구할 수 있고, h의 최대 값은 n이 h보다 같거나 커지는 최초의 순간이므로, 그렇게 코드를 작성해주면 끝날 줄 알았다. package com.choonham; import java.util.Arrays; class Solution { public int solution(int[] citations) { int answer = 0; int h = 0; int n = 0; Arrays.sort(citations); for(int..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/rg0ZQ/btq1FA7dVp6/jTYZPohIknQgEp4A6RrC8k/img.png)
어....꽤나 어려운 문제가 걸린 거 같다. 첫 인상은 어제 풀었던 Heap LV3보다 더 생각할 것이 많아 보였다. 처음에는 하나하나 붙여서 따로 배열을 생성한 뒤 내림차순으로 정렬하여 String변환 후 내보내는 코드를 짜려고 했는데... 이게 테스트케이스 2번 같은 경우만 해도, 나올 수 있는 경우의 수가 5 x 4 x 3 x 2 x 1 = 120 이 나오는 미친 효율성을 보여줄게 뻔해서...포기했다. 다시 처음으로 돌아와서 애초부터 String Array로 변환을 시킨 후에 내림차순 정렬을 하는 방법을 생각해봤지만, 문자열은 첫번째 자리가 큰 순서, 문자열이 긴 순서로 정렬이 되기 때문에 테케 2번에 9534303이 나와버린다...하하... 한참을 고민하다가, Sort의 기준을 두 인자를 합친 값..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/nVHB5/btq1I6xNKTz/4tX3wtki2zwLkwdp57fLDK/img.gif)
어제 Socket을 사용한 간단한 서버 - 클라이언트 간 채팅 프로그램을 구현해봤다. 이번엔 단순한 채팅이 아닌, 문제 은행을 저장해놓고 문제에 해당하는 정답을 클라이언트로부터 받아 서버에 저장 후, 정답 여부를 판단하여 다시 클라이언트에 보내주는 양방향 문제 풀이 프로그램을 구현해봤다. 원리는 간단하다. 데이터를 좇아가기가 조금 복잡해졌을 뿐... 우선, 입력받은 답안에 따라 상태를 바꿔가며 문제를 출제해 줄 프로토콜을 구성해야 한다. 즉, 문제 배열과 정답 배열을 가지고 있다가, 서버에서 입력받은 답안이 정답과 같은 지 확인한 그 결과에 따른 출력을 내보내게끔 구성해야 한다. ○QuizProtocol.java package com.choonham; public class QuizProtocol { /..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/dfcrYG/btq1G8I7BDO/EmN1FR5Wm2K8C2S8SXz5ik/img.png)
어제부터 Sort를 이용하는 Programmers 연습 문제를 풀기 시작했는데, 어제 푼 문제가 LV1이여서 그런건지, 아니면 내가 java에 내장되어있는 sort()를 사용해서 그런건지 모르겠는데 역대급 낮은 점수인 2점을 받았다... 그렇게 심각한 문제는 아니지만, 혹시 sort 알고리즘을 내부에서 직접 구현을 안해서 그런거라면..? 하는 생각이 들어서 더 높은 LV의 sort문제를 풀기 전에 한번 정리를 하고 넘어가려고 한다. (Heap Sort는 이전 포스팅에서 한번 다뤘으니 따로 다루지는 않겠다.) 1. Bubble Sort 인접한 두 인자가 정해진 순서를 따르고 있지 않다면, 두 인자의 위치를 바꾸며 정렬을 진행하는 정렬 방법이다. 즉, 4 2 1 5 3 2 4 1 5 3 2 1 4 5 3 2..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/b24DxJ/btq1By9Eno9/76wUeD2hWykd7fRBudhrw0/img.png)
1. Socket: 네트워크에 연결된 컴퓨터 간에 데이터를 주고 받을 때 사용하는 도구. 하드웨어적인 의미로 소켓이라는 용어를 사용하기도 하지만 여기서는 소프트웨어적인 개발 도구를 뜻한다. 자바에서는 TCP 소켓 통신을 위해 Socket Class와 ServerSocket Class를, UDP 통신을 위해서는 DatagramPacket Class와 DatagramSocket Class를 제공한다. 1) Socket의 연결과 전송 과정: 2) Socket Constructual: Socket(InetAddress address, int port) 주어진 IP address와 포트를 가지고 소켓 생성 Socket(String host, int port) 주어진 host와 포트를 가지고 소켓 생성 - Sock..
- 파니노구스토
- Promise
- await
- AsyncStorage
- Async
- redux-thunk
- 정보보안기사 #실기 #정리
- 맛집
- 인천 구월동 맛집
- react-native
- 인천 구월동 이탈리안 맛집
- 이탈리안 레스토랑
- react
- javascript
- redux
- Total
- Today
- Yesterday