개요 기하학적 데이터 처리는 이진 검색 트리(binary search tree)의 응용분야 중 하나입니다. 예를 들어 평면에 사각형이 놓여있고 점이 여기저기 분포해 있을 때, 어떠한 점이 사각형 내부에 있는지 또는 얼마나 많은 점이 사각형 내부에 포함되는지 알고 싶을 수 있습니다. 또는 점이 아닌 사각형이 여러 개 있는 경우 어떤 사각형이 서로 겹치는지 알고 싶을 수 있습니다. 우리는 이진검색트리를 이들 문제를 해결하는 데 사용할 수 있습니다. 그 경우 일반적으로 사용하는 문자열과 숫자가 아닌 기하학적 객체(점의 위치 등)를 키로 사용합니다. 1차원 범위검색 (1d Range Search) 정렬된 심볼테이블(Ordered Symbol Table)을 조금 확장하면 1차원 범위 검색과 범위 개수를 셀 수 있..
개요 라즈베리파이를 포함한 리눅스 및 윈도우즈는 우선 DHCP를 이용하여 IP 획득을 시도하고, IP 획득에 실패하면 자신의 IP를 사설 IP 영역인 169.254.0.0/16로 자동 설정합니다. DHCP는 네트워크에 연결된 장치에 동적으로 IP를 부여해주는 프로토콜입니다. 라즈베리파이의 운영체제인 라즈비언(Raspbian)은 내장하고 있는 dhcpcd 프로그램에서 DHCP 프로토콜로 자신이 사용할 수 있는 IP를 DHCP 서버로 요청합니다. 라즈베리파이는 DHCP 서버에서 발행한 IP를 자신의 IP로 설정합니다. 예를 들어 제 라즈베리파이는 이 절차에 따라 현재 192.168.0.3이라는 내부 IP로 설정되어 있습니다. 라즈베리파이를 24시간 동작하는 홈서버 또는 NAS로 사용하지 않는 경우나 장치의 ..
질문 바보 같은 질문일 수도 있지만, 정말로 Redirection과 Pipe의 차이를 모르겠습니다. Redirection 은 ls > log.txt 와 같이 stdout/stdin/stderr의 방향을 돌리는데(redirect) 사용합니다. ls | grep file.txt 와 같이 Pipes는 다른 명령의 입력으로 명령의 출력을 제공할 때 사용합니다. 하지만 왜 동일한 작업을 위해서 서로 다른 두 명령어를 사용합니까? 왜 그냥 간단히 ls > grep 을 사용하지 않습니까? 이것도 redirection의 한 종류가 아닙니까? 답변 Pipe는 출력을 다른 프로그램 이나 유틸리티 로 넘길 때 사용합니다. Redirection은 출력을 파일 이나 스트림으로 넘길 때 사용합니다. 예 : thing1 > thi..
개요작년 (2018년) Angular 학습을 하며 만들어 보았던 유튜브 자동 재생 웹앱인 모두의 라디오에 방문해 주신 분께서 검색이 되지 않는다는 내용을 남겨 주어서 오류를 수정하고자 합니다.오류내용모두의 라디오는 Youtube 영상을 검색하는 기능을 포함하고 있는데, 해당 기능을 사용하고자 하면 다음과 같은 오류가 출력됩니다.{ "error": { "errors": [ { "domain": "usageLimits", "reason": "accessNotConfigured", "message": "Access Not Configured. YouTube Data API has not been used in project 100098281473 before or it is disabled. Enable it..
개요 최근 Heroku 측으로부터 현재 제가 배포한 애플리케이션이 운영되는 스택(Cedar-14)의 지원이 만료된다는 안내를 메일로 수신하였습니다. Heroku에서 이야기하는 스택(Stack)이란 운영체제의 이미지를 의미합니다. Heroku의 운영체제 이미지는 현재 Ubuntu를 기반으로 하고 있습니다. 따라서 간단히 말하면 Ubuntu 14.04를 기반으로 동작하고 있는 저의 애플리케이션의 운영체제를 업그레이드하라는 안내였습니다. 이번 포스트에서는 이를 수행해 보도록 하겠습니다. 조치방법 (사전작업) Heroku CLI 설치 Heroku CLI 설치 $ curl https://cli-assets.heroku.com/install.sh | sh $ heroku --version계정 로그인 $ heroku..
개요 때때로 SSH를 이용하여 라즈베리파이에 접속 후, 프로그램을 실행하다 보면 장시간 구동이 필요한 경우가 있습니다. 하지만 어떤 사유로 SSH 세션이 갑자기 종료되면 동작중이던 프로그램도 함께 종료되고 작업 중이던 내용도 함께 잃게 됩니다. 다행히 Screen이라는 GNU의 유틸리티를 사용하면 이러한 상황을 예방할 수 있습니다. 설치 라즈베리파이에 Screen이 설치되어 있지 않은 경우, 다음 명령을 사용하여 Screen을 설치할 수 있습니다. $ sudo apt install screen $ screen -v Screen version 4.05.00 (GNU) 10-Dec-16Screen 사용 Screen 실행 Screen세션을 하나 실행하려면 간단히 아래의 명령어를 터미널에 입력합니다. $ scr..
풀이 문제에 기술되어 있는 내용을 정확히 코드로 구현합니다. #include #include using namespace std; int main() { // your code goes here int R; while (cin >> R) { if (R == -1) { break; } cout > guesses; int Stroke = 0; while(guesses.length()>0) { char ch = guesses[0]; if ( solution.find(ch) == -1 ) { Stroke += 1; } else { solution.erase(remove(solution.begin(), solution.end(), ch), solution.end()); } guesses.erase(remove(g..
문제(요약) 부분문자열의 갯수를 구하시오. (출처) 접근법 완전탐색구현 후, 시간초과 발생하여 Dynamic Programing (Memoization) 적용 풀이 #include #include using namespace std; string S; string sT = "SAMSUNG"; const int NUM = 1000000007; vector memo; int fnSolve(int IdxT, int IdxS) { if (sT.size() == IdxT) { return 1; } if (S.size() == IdxS) { return 0; } int Ret = memo[IdxT][IdxS]; if (Ret != -1) { return Ret; } if (sT[IdxT] == S[IdxS]) { ..