본문 바로가기

전체 글

(56)
HBase Client 프로그래밍 with JAVA 일반적으로 MySQL 데이터베이스를 사용하는 어플리케이션을 만들기 위해서는 또는 CRUD 연산을 하기 위해서 원격에서 해당 데이터베이스에 접근하기 위한 MySQL Client를 설치하거나 또는 해당 벤더에서 제공하는 JDBC를 사용하여야 합니다. 유명한 JDBC로는 오라클에서 제공하는 J connector 라는 것이 유명하죠~. 이처럼 HBase도 Client에서 HBase를 사용할 수 있게끔 Client용 프로그램을 제공합니다. HBase에 정보를 넣거나 가져올 때 사용하는 방법으로는 이 클라이언트 접속 프로그램을 포함하여 4가지 접근방법이 있습니다. 1. HBase Shell 이용 가장 처음 hbase를 접하면 사용하는 방식일 것입니다. shell을 통해서는 테이블 및 스키마를 생성하거나, 수정할 때..
백준 16236 아기상어 C++ 풀이 www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 오랜만에 백준 문제를 풀었습니다. 저는 BFS를 이용하여 AC를 받았고 minimum_distance의 초깃값을 20*20인 400보다 큰 값으로 설정해야 하는데 습관적으로 100이라고 하는 바람에 WA를 3번이나 받았습니다. 메인 함수의 로직은 아래와 같습니다. 아기 상어의 먹잇감을 찾는 find_prey() 함수를 구현하여 먹이를 못 찾을 때까지 무한루프를 돌면서 먹이를 찾습니다. while(true..
12가지 인생의 법칙을 읽고 지금까지 살아오면서 인생의 정답은 누가 알려주는 것이 아니라 스스로 찾아내야 한다는 신념을 가지고 있는 나로서는, 책의 제목을 처음 보자마자 약간의 거부감이 들었다. 이전에 얄팍한 지식으로 자칭 인생의 정답이라고 주장하는 자기계발서 몇 권을 읽고 실망했던 적이 있었기 때문이다. 사람마다 태어난 환경과 문화가 다르고 개개인의 특수성이 반영되지 않은 상태에서 검증되지 않은 몇 가지 법칙들을 맹목적으로 따르다 보면 부작용이 반드시 생기기도 한다. 더욱더 이 책의 내용에선 직접적으로 밝히지 않지만 저자는 하버드대학교에서 교수를 역임했던 경력이 있는데 나의 이성이 책의 내용에 대한 아무런 사고 없이 저자의 권위에 억눌려 무조건 적으로 수용할까봐서 더욱더 비판적인 시각으로 읽어나갔다. 그러나 생각과는 다르게 책을 ..
C언어 매크로(Macro)와 전처리기(Preprocessors) 총정리 C언어를 이용해서 프로그램을 작성할 때 자동으로 떠오르는 그것이 있다. 자다 일어나서 정신이 없는 상태에서 컴퓨터 앞에 앉더라도 손가락이 기억하고 있는 그것. 1 #include cs '#' 키워드는 컴파일러가 컴파일을 실행하기 전에 처리한다고 하여 전처리기(Preprocessor)라고도 하고 매크로라고도 한다. 그렇기에 우리가 전처리기를 이용해서 stdio.h라는 헤더파일을 불러오면 우리가 마음껏 scanf나 printf같은 함수들을 마음껏 사용할 수 있는 것이다. 그런데 C언어에서는 우리에게 익숙한 #include 뿐만 아니라 다른 전처리기 연산들을 제공하고, 이를 이용하면 좀더 코드를 작성할 때 유용하게 사용할 수 있다. 1. 상수 정의 1 2 3 4 5 6 7 #include #define MAX..
[백준] 2644 촌수계산 C++ 풀이 백준 2664 촌수계산 C++ 풀이 문제 링크 촌수 관계는 트리 형태이지만, 이를 양방향 그래프로 치환하여 dfs로 풀 수 있다. 만약 p와 c가 같다면, 그래프가 연결되어 있는 것이므로, ans 전역변수에 정답을 저장한다. 한번 dfs가 호출될 때 마다 노드 p에 연결된 미리 방문하지 않은 인접한 노드와, cnt를 1증가한 값을 인자로 dfs를 호출한다. ans를 -1로 초기화 해주었기 때문에, 한번도 업데이트가 되지 않은 경우 가족이 아니기 때문에 초기값 -1을 그대로를 출력하게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #includ..
[백준] 14889:스타트와 링크 C++ 풀이 14889: 스타트와 링크 문제 링크 해결 방법 combination을 함수를 작성하여 n명의 사람을 n/2명의 두 팀으로 나누어 준다. (이 때 permutation으로 작성하면 안된다.) 예를 들어 permutation은 team1: (1,2), team2: (3,4) 뿐만 아니라 team1:(2,1), team2:(3,4) 또는 team1:(2,1), team2:(4,3) 처럼 팀원을 팀안에서도 분할하게 되는데, 이 경우가 이번 문제에서는 결과적으로 같은 능력치를 갖기 때문이다. 순서를 주어서 조합으로 구현해야 한다. cnt가 n/2가 되었다면 정확하게 visited배열의 절반 만이 true가 되었기 때문에 이 배열을 이용해 팀간의 능력치를 구해서 최솟값을 갱신해주면 된다. 능력치를 구할 때는, 2..
터미널에서 문자열의 끝 문자(널문자) 입력하기 '\0' 커맨드 라인에서 문자열의 끝을 강제로 입력해 주어야 할 필요가 있는 경우 Ctrl + d 키를 누르면 된다. 그러면 해당 커서 뒤에 널 문자 ('\0')가 입력된다. 보통 널 문자는 모든 텍스트 파일의 맨 마지막에 자동으로 삽입되어, 파일의 끝을 알려준다. 엔터로 알고있는 개행문자 ('\n' )와는 분명히 다른 문자임을 명심하자.
[백준] 1003번: 피보나치 함수 풀이 처음에는 아래와 같은 피보나치 함수의 재귀적 정의를 이용해서 종료 조건인 fibonacci(0) 과 fibonacci(1)이 호출 될 때마다 각각 a와 b의 값을 증가시켜서 호출 횟수를 새려고 하였다. 그러나 n이 커짐에 따라 0과 1의 호출 횟수가 기하급수적으로 증가하여 시간초과가 났다. 그래서 아래와 같은 방법으로는 n이 조금만 커지더라도 사용할 수 없다. int a; int b; int fibonacci(int n) { if (n == 0) { a++; return 0; } else if (n == 1) { b++; return 1; } else { return fibonacci(n-1) + fibonacci(n-2); } } 피보나치 수를 계산할 때, 중복되는 호출을 제한하기 위해 동적계획법을 이..