[Algorithm] 백준 6549 히스토그램에서 가장 큰 직사각형 - node.js
이 글은 백준 6549 히스토그램에서 가장 큰 직사각형 문제를 풀이한다. 코드는 javascript로 작성되었다. 문제 히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이다. 각 직사각형은 같은 너비를 가지고 있지만, 높이는 서로 다를 수도 있다. 예를 들어, 왼쪽 그림은 높이가 2, 1, 4, 5, 1, 3, 3이고 너비가 1인 직사각형으로 이루어진 히스토그램이다. 히스토그램에서 가장 넓이가 큰 직사각형을 구하는 프로그램을 작성하시오. 입력 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ 1,000,000,00..
[Algorithm] 조합(nCr)의 모든 경우를 구하는 방법(c++, javascript)
이 글은 n개의 수 중 r개를 고르는 모든 경우(조합)를 구하는 방법에 대해 설명한다. 조합 서로 다른 N개의 원소를 순서 없이 골라낸 것을 조합(combination)이라고 부른다. 모든 조합 만들기 중첩 반복문 0번부터 차례로 번호 매겨진 n개의 원소 중 네 개를 고르는 모든 경우를 출력하는 코드를 작성해보자. 예를 들어, n이 7이라면 (0, 1, 2, 3) (0, 1, 2, 4) (0, 1, 2, 5) ... (3, 4, 5, 6)의 모든 경우를 출력하면 된다. 이를 간단하게 푸는 방법에는 다음과 같은 4중 for문이 있다. //c++ for(int i=0; i