리눅스에서는 '|'라는 문자와 ''와 같이 명령어를 쓰는 경우가 많아요. 전자는 파이프, 후자는 리다이렉션이라고 이야기를 하는데요. 오늘은 그 중, 파이프 명령어를 알아보도록 하겠습니다. 파이프란, 어떠한 프로세스의 출력이, 그 다음 프로세스의 입력이 되는 것을 말합니다. 여기까지만 봐서는 무슨 말인지 이해가 안 갈 듯 싶네요. 예제를 몇 개 들어보겠습니다. 먼저, 현재 디렉토리에 있는 모든 파일과 디렉토리를 이름 오름차순으로 9개만 자세히 보는 명령을 작성해 봅시다. 아니, 이게 무슨 끔찍한 조합인 거 같지만, 사실 그리 어렵지 않습니다. 먼저, 무엇부터 해야 할까요? 현재 디렉토리에 있는 파일 목록 모두를 자세히 출력해야 합니다. 이것은 ls -al로 할 수 있어요. 다음에, 이 결과값을 이용해서, ..
분류 전체보기 검색 결과
스택을 응용한 문제 중에는, 히스토그램에서 가장 큰 직사각형이라는 문제가 있습니다. 히스토그램 안에서 그릴 수 있는 직사각형 중, 넓이가 가장 큰 직사각형의 넓이를 구하는 문제입니다. 이것은 푸는 방법이 상당히 많습니다. 세그먼트 트리로 풀어도 되고, 분할 정복으로 풀어도 됩니다. 여기에서는 우리가 배운 스택을 응용해서 풀어보도록 하겠습니다. 먼저 데이터가 다음과 같이 들어왔다고 해 봅시다. 히스토그램에서, 총 7개의 직사각형이 있어요. 그러면 arr[0]과 arr[8]은 0으로 초기화를 합니다. 이를 더미 데이터라고 합니다. 처리하기 쉽게 처리한 겁니다. 그리고 arr[1] = 2, arr[2] = 1, arr[3] = 4, arr[4] = 5, arr[5] = 1, arr[6] = arr[7] = 3..
1차원, 2차원 배열에서 구간이 주어졌을 때 어떻게 부분합을 구하는지 알아봅시다. 3차원 이상인 경우에는, 포함 배제의 원리를 알고 있어야 됩니다. 그렇기 때문에, 저는 1차, 2차원 array에서 subsum, 부분합을 구하는 것만 알려드리도록 하겠습니다. 먼저 누적합을 1차원에서 어떻게 구하는지 봅시다. 배열 arr이 있습니다. 제가 보라색으로 칠해놓은 것은 더미 데이터를 넣는데요. 0을 넣습니다. 0에 x를 더해도 0이기 때문입니다. 즉, 0은 덧셈에 대한 역원이기 때문에 보통 0으로 초기화를 합니다. nj[x]를 다음과 같이 정의합시다. 구간 [0,x]에 있는 수들의 합. 그렇다면 nj[0]의 값은 0입니다. 아무것도 없으니까 합이 0일 수 밖에 없기 때문입니다. 그러면 [0,x]까지의 합은 어떻..
오늘은 Java에서 쓰레드를 생성하고 실행하는 방법에 대해서만 알아보도록 하겠습니다. Runnable을 매개값으로 하는 Thread 생성자를 호출하거나, 아니면 worker가 Thread를 상속하는 방법 2가지가 있는데요. 이 둘을 먼저 알아보도록 하겠습니다. 코드를 컴파일 하고 실행을 합니다. static void main(String args[]); 이 친구가 있는데요. 이 친구를 실행하고 종료하는 쓰레드를 메인 쓰레드라고 합니다. 그런데, worker를 하나 더 만들 수 있어요. 즉, Main 실행 흐름만 만드는 것이 아니라, 다른 역할을 하는 스레드 또한 만들 수 있는데요. 예를 들어서, Main에서 게임의 전체적인 알고리즘 같은 것을 수행한다면, Worker에서 배경 음악을 재생한다던지. 그런 ..
mysql에서 sysdate()와 now()는 현재 날짜와 시간을 리턴해 주는 함수입니다. 예를 들어서 도서관 데이터 베이스가 있다고 합시다. 어떠한 사람이 어떤 책을 빌려갔는지, 언제 빌려갔는지 등을 테이블에 저장할 거에요. 보통, 30일 정도 지나면 연체인데요. 이 때, 현재 시간이, 빌린 날로부터 30일 이상 경과되었다면 연체로 처리하면 될 거에요. 그럴 때, 보통 두 함수를 써요. 현재 시간과 날짜를 알아와야 할 때. 물론, 여기서 데이터를 더 잘 조작해야 겠지만요. 이 두 함수는 하는 일은 같지만, 차이가 있는데요. 이 부분에 대해서, 알아보도록 하겠습니다. 먼저 sysdate() 부터 봅시다. 다음 쿼리를 작성해 봅시다. sysdate() 함수 사이에, sleep 함수를 호출했는데요. 대충 1..
최근댓글