친구 그룹이 휴가를 갔다가 때때로 서로에게 돈을 빌려주었다고 가정해 보겠습니다. 예를 들어 Amit은 Bikram의 점심 값을 10달러로 지불했습니다. 그런 다음 Chandan은 Amit에게 택시 요금으로 5달러를 주었습니다. 각 트랜잭션이 튜플(x, y, z)로 간주되는 모델을 설계해야 합니다. 이는 x가 사람 y에게 $z를 제공했음을 의미합니다. Amit, Bikram 및 Chandan이 각각 0, 1, 2인 경우 트랜잭션은 [[0, 1, 10], [2, 0, 5]]로 나타낼 수 있습니다. 사람들 사이의 거래 목록이 있는 경우
비어 있지 않은 두 개의 문자열 s1과 s2(최대 100자)가 있고 두 개의 숫자 n1과 n2가 모두 0에서 106 사이의 범위에 있다고 가정합니다. 이제 S1=[s1,n1] 및 S2=[인 문자열 S1과 S2를 가정합니다. s2,n2]. S =[s,n]은 n개의 연결된 문자열 s로 구성된 문자열 S를 정의합니다. 예를 들면 [ab, 4] =abababab입니다. 반면에 s1이 되도록 s2에서 일부 문자를 제거하면 문자열 s1을 문자열 s2에서 얻을 수 있다고 정의합니다. 따라서 abc는 정의에 따라 abdbec에서 얻을 수 있지
비어 있지 않은 문자열이 있다고 가정합니다. 인코딩된 길이가 최소가 되도록 이 문자열을 인코딩해야 합니다. 인코딩 규칙은 − k[encoded_string]과 같으며, [ ] 안의coded_string이 정확히 k 번 반복됩니다. k는 양의 정수이고 인코딩된 문자열은 비어 있지 않거나 추가 공간이 없다는 점을 명심해야 합니다. 입력 문자열에 소문자만 포함되어 있다고 가정할 수 있습니다. 인코딩 프로세스가 문자열을 더 짧게 만들지 않으면 해당 문자열을 인코딩하지 마십시오. 따라서 입력이 aaaaa와 같으면 5[a]가 aaaaa보다
문자열 s가 있고 단어 목록도 있다고 가정합니다. 배열에 있는 단어의 길이는 모두 같습니다. 단어의 각 단어를 중간 문자 없이 정확히 한 번 연결하는 s에서 부분 문자열의 모든 시작 인덱스를 찾아야 합니다. 따라서 입력이 barfoothefoobarman이고 단어가 [foo, bar]인 경우 출력은 [0,9]가 됩니다. 인덱스 0과 9로 시작하는 부분 문자열이 barfoo와 foobar이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ok()라는 메서드를 정의하면 문자열 s, 매핑 wordCnt 및 n
빈 공간과 벽이 있는 미로가 있고 그 미로에도 공이 있다고 가정합니다. 공은 위(u), 아래(d), 왼쪽(l), 오른쪽(r) 방향으로 굴러 빈 공간을 통과할 수 있지만 벽에 부딪힐 때까지 계속 굴러갑니다. 공이 멈추면 다음 방향을 선택할 수 있습니다. 그 미로에도 구멍이 하나 있습니다. 공이 구멍으로 굴러 가면 구멍으로 떨어집니다. 따라서 공 위치, 구멍 위치 및 미로가 있는 경우 최단 거리를 이동하여 공이 어떻게 구멍에 떨어질 수 있는지 알아내야 합니다. 여기서 거리는 시작(제외)에서 홀(포함)까지 공이 이동한 빈 공간의 수로
크기가 n x 3인 그리드가 있고 그리드의 모든 셀을 세 가지 색상 중 정확히 하나로 칠하려고 한다고 가정합니다. 여기서 사용할 색상은 빨강, 노랑, 녹색입니다. 이제 두 개의 인접한 셀이 동일한 색상을 갖지 않는다는 제약이 있습니다. n개의 그리드 행이 있습니다. 마지막으로 이 격자를 칠할 수 있는 방법의 수를 찾아야 합니다. 답은 매우 클 수 있으므로 모듈로 10^9 + 7을 반환합니다. 따라서 입력이 1과 같으면 출력은 12가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m =10^9 + 7
세 개의 정수 n, m, k가 있다고 가정합니다. 양의 정수 배열의 최대 요소를 찾는 다음 알고리즘이 있는 경우 - max_val := -1 max_ind := -1 search_cost := 0 n := size of arr for initialize i := 0, when i < n, update (increase i by 1), do: if max_val < arr[i], then: max_val := arr[i] ma
이 문제에서는 양수로 구성된 이진 트리가 제공됩니다. 우리의 임무는 C++에서 허용되지 않는 인접 레벨을 가진 트리에서 최대 합을 찾는 프로그램을 만드는 것입니다. 코드 설명 여기에서 트리의 인접한 두 수준의 노드가 합계에 포함되지 않는 방식으로 트리 노드의 최대 합계를 찾습니다. 문제를 이해하기 위해 예를 들어보겠습니다. 출력 21 설명 루트를 시작 레벨로 사용, 합계 =5 + 3 + 8 + 1 =17 루트의 하위 자식을 시작 레벨로 취, 합계 =2 + 6 + 9 + 4 =21 솔루션 접근 방식 maxSum을 찾기 위한
이 문제에서는 크기가 N인 3개의 배열 arr1[], arr2[], arr3[]이 제공됩니다. 우리의 임무는 동일한 요소에서 연속적으로 요소를 선택하지 않도록 3개의 배열에서 최대 합을 찾는 프로그램을 만드는 것입니다. C++에서 허용됩니다. 문제 설명 N개의 요소를 선택하여 최대 합을 찾습니다. i=th 요소는 배열의 i번째 요소의 합에서 선택할 수 있습니다. 즉, i번째 합은 arr1[i]/ arr2[i]/ arr3[i]입니다. 또한 동일한 배열에서 선택할 수 있는 두 개의 연속 요소를 선택할 수 없다는 점에 유의하십시오.
이 문제에서는 크기가 2 x n인 직사각형 그리드가 제공됩니다. 우리의 임무는 C++에서 두 요소가 인접하지 않도록 2 x n 그리드에서 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 최대 합을 찾기 위해 현재 요소에 인접한 요소를 세로, 가로 또는 대각선으로 선택할 수 없습니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 rectGrid[2][] =389 411 출력 13 설명 가능한 모든 합계는 rectGrid[0][0] 즉 3에서 시작하면 9 또는 1만 추가할 수 있습니다. maxSum은 12입니다.
이 문제에서는 원형 배열 cirArr[]이 제공됩니다. 우리의 임무는 C++에서 두 요소가 인접하지 않도록 원형 배열에서 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 원형 배열의 경우 인접 요소를 사용할 수 없도록 배열 요소의 최대 합을 찾아야 합니다. 즉, 대체 요소를 가져와야 합니다. 원형 배열 배열의 마지막 요소가 첫 번째 요소에 연결되는 특수한 유형의 배열입니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 cirArr[] = {4, 1, 5, 3, 2} 출력 9 설명 최대 합 순환 부분 수열은
이 튜토리얼에서는 최대 합 증가 부분 수열을 찾는 프로그램에 대해 논의할 것입니다. 이를 위해 N개의 정수를 포함하는 배열이 제공됩니다. 우리의 임무는 배열에서 요소를 선택하여 요소가 정렬된 순서로 되도록 최대 합계를 추가하는 것입니다. 예시 #include <bits/stdc++.h> using namespace std; //returning the maximum sum int maxSumIS(int arr[], int n) { int i, j, max = 0; int m
이 문제에서는 N개의 정수와 두 개의 인덱스 값 x와 y로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 C++에서 접두사와 접두사 뒤에 주어진 요소에서 최대 합 증가 부분 수열을 찾는 프로그램을 만드는 것입니다. 문제 설명 인덱스 x까지 증가하는 시퀀스와 인덱스 y에 있는 요소를 포함하는 시퀀스의 최대 합을 찾습니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {1, 5, 9, 131, 6, 100, 11, 215}, x = 4, y = 6 출력 26 설명 인덱스 3까지 하위 시퀀스를 사용하고 마지
이 문제에서는 N개의 요소로 구성된 배열 rr[]이 제공됩니다. 우리의 임무는 C++에서 Binary Indexed Tree를 사용하여 최대 합 증가 부분 수열을 찾는 프로그램을 만드는 것입니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {4, 1, 9, 2, 3, 7} 출력 13 설명 최대 증가 부분 수열은 1, 2, 3, 7입니다. 합계 =13 솔루션 접근 방식 이 문제를 해결하기 위해 값을 삽입하고 이진 인덱스 트리에 매핑하는 이진 인덱스 트리를 사용합니다. 그런 다음 최대값을 찾으십시오. 예시
이 문제에서는 배열이 제공됩니다. 우리의 임무는 C++에서 순열의 절대차의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 주어진 배열 요소의 모든 순열을 찾습니다. 그런 다음 배열의 인접한 요소의 절대 차이의 합을 찾습니다. 마지막으로 모든 합계의 최대값을 반환합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {9, 1, 6, 3} 출력 17 설명 All permutations of the array with sum of absolute difference of adjacent elements.
이 문제에서 우리는 숫자 N을 받습니다. 우리의 임무는 C++에서 인접 요소의 차이의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 모든 순열 배열의 인접 요소 간의 절대 차이의 최대 합을 찾습니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 N =4 출력 7 설명 크기 4의 모든 순열은 다음과 같습니다.{1, 2, 3, 4} =1 + 1 + 1 =3{1, 2, 4, 3} =1 + 2 + 1 =4{1, 3, 2 , 4} =2 + 1 + 2 =5{1, 3, 4, 2} =2 + 1 + 2 =5{1, 4, 2, 3}
이 문제에서 우리는 숫자 N입니다. 우리의 임무는 C++에서 이러한 숫자의 LCM이 N이 되도록 고유한 숫자의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 우리는 숫자 N의 모든 인수의 합을 찾아야 합니다. 그리고 최대 합을 찾기 위해 모든 고유한 것을 더해야 합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 N = 12 출력 28 설명 All distinct factors of N are 1, 2, 3, 4, 6, 12. Sum = 1 + 2 + 3 + 4 + 6 + 12 = 28 솔루션 접근 방식 간단
이 문제에서는 숫자 N이 주어집니다. 우리의 임무는 C++에서 LCM을 N으로 사용하여 고유한 숫자의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 여기서 N이 LCM(최저공배수)인 최대 수의 합을 찾아야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 N = 10 출력 18 설명 Maximum sum with LCM 10 is 1 + 2 + 5 + 10 = 18 솔루션 접근 방식 문제에 대한 간단한 솔루션은 숫자 N을 LCM으로 원할 경우 N의 고유한 제수를 모두 가져와야 한다는 아이디어를 사용하는 것입니
이 문제에서는 두 개의 행렬 mat[][]가 제공됩니다. 우리의 임무는 C++에서 행렬의 각 행에서 요소의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 여기서 우리는 현재 행의 요소가 합으로 간주되는 마지막 행 요소보다 크도록 행렬의 각 행에서 하나의 요소를 취하여 최대 합을 찾을 것입니다. 위의 조건을 따르는 요소의 최대 합을 찾고 불가능하면 -1을 출력합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 mat[][] = {{4, 6, 1}, {2, 5, 7}, {9, 1, 2}} 출력 22 설명 1st ro
이진 트리가 있다고 가정합니다. 우리가 알고 있듯이 Binary Tree의 간결한 인코딩은 가능한 가장 낮은 공간에 가깝게 수행됩니다. n 카탈로니아 수는 n개의 다른 노드를 가진 구조적으로 다른 이진 트리의 수로 지정됩니다. n이 크면 약 4n입니다. 따라서 인코딩하려면 최소 약 log2(4) n =2n 비트가 필요합니다. 따라서 간결한 이진 트리는 2n + O(n) 비트를 소비합니다. 따라서 입력이 다음과 같으면 그러면 출력은 인코딩 - 구조 목록 1 1 1 0 0 1 0 0 1 0 1 0 0 데이터 목록 10 20