분류 전체보기

    [class4] (백준 11660) 구간 합 구하기 5

    HTML 삽입 미리보기할 수 없는 소스 #include using namespace std; int N, M; int arr[1025][1025]; int linesum[1025][1025]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N >> M; for (int i = 0; i > arr[i][j]; if (j == 0) linesum[i][j] = arr[i][j]; else linesum[i][j] = linesum[i][j-1]+arr[i][j]; } } int x1, y1, x2, y2; int result = 0..

    [class4] (백준 9465) 이진 검색 트리

    HTML 삽입 미리보기할 수 없는 소스 #include using namespace std; int arr[100001][2]; int dp[100001][2]; int N; int GetMax(int num, int floor) { if (num == 0) { return arr[0][floor]; } else if (num == 1) { if (floor == 0) { return arr[0][1] + arr[1][0]; } else { return arr[0][0] + arr[1][1]; } } if (dp[num][floor] == -1) { int reverseNum = (floor == 1 ? 0 : 1); int temp1 = GetMax(num - 1, reverseNum); int tem..

    [class4] (백준 5639) 이진 검색 트리

    문제 이진 검색 트리는 다음과 같은 세 가지 조건을 만족하는 이진 트리이다. 노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다. 노드의 오른쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 크다. 왼쪽, 오른쪽 서브트리도 이진 검색 트리이다. 전위 순회 (루트-왼쪽-오른쪽)은 루트를 방문하고, 왼쪽 서브트리, 오른쪽 서브 트리를 순서대로 방문하면서 노드의 키를 출력한다. 후위 순회 (왼쪽-오른쪽-루트)는 왼쪽 서브트리, 오른쪽 서브트리, 루트 노드 순서대로 키를 출력한다. 예를 들어, 위의 이진 검색 트리의 전위 순회 결과는 50 30 24 5 28 45 98 52 60 이고, 후위 순회 결과는 5 28 24 45 30 60 52 98 50 이다. 이진 검색 트리를 전위 순회한 결과가 ..

    [class4] (백준 1191) 트리 순회

    문제 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로..

    [class4] (백준 1932) 정수 삼각형

    [class4] (백준 1932) 정수 삼각형

    문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 제한 예제..

    [class4] (백준 1629) 곱셈

    #include using namespace std; int input[3]; int getResult(int n, int m) { if (m == 0) return 1; int temp = getResult(n, m / 2); int result = (1LL* temp * temp) % input[2]; if (m % 2) { result = 1LL * result * n % input[2]; } return result; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> input[0] >> input[1] >> input[2]; cout