이 튜토리얼에서는 간단한 계산기를 위한 메뉴 구동 프로그램을 만드는 프로그램에 대해 논의할 것입니다. 이 프로그램은 사용자에게 덧셈, 뺄셈, 곱셈, 나눗셈, HCF 및 LCM과 같은 수학 연산 중에서 선택할 수 있는 기능을 제공합니다. 예시 #include <bits/stdc++.h> using namespace std; //displaying the menu void menu(){ cout << "Press 1 to calculate Sum of Numbers\n";
이 자습서에서는 C++ STL에서 set을 사용하여 k 크기의 모든 하위 배열을 최대로 가져오는 프로그램에 대해 설명합니다. 이를 위해 크기가 N이고 정수 K인 배열이 제공됩니다. 우리의 임무는 각 K개의 요소에서 최대 요소를 가져와 더하고 인쇄하는 것입니다. 예시 #include <bits/stdc++.h> using namespace std; //returning sum of maximum elements int maxOfSubarrays(int arr[], int n, int k){ set&
이 튜토리얼에서는 C++ STL에서 map equal_range를 이해하는 프로그램에 대해 논의할 것입니다. 이 함수는 주어진 매개변수에 해당하는 키가 있는 컨테이너 범위를 제한하는 반복자 쌍을 반환합니다. 예시 #include <bits/stdc++.h> using namespace std; int main() { //initializing container map<int, int> mp; mp.insert({ 4, 30 });  
각 값이 0 또는 1인 2차원 행렬 A가 있다고 가정합니다. 여기에서 이동은 행이나 열을 선택하고 해당 행이나 열의 각 값을 토글하는 것으로 구성됩니다. 즉, 모든 0을 1로, 모든 1을 0으로 변경합니다. 이제 여러 번 이동한 후 이 행렬의 모든 행이 이진수로 해석되고 행렬의 점수는 이러한 숫자의 합입니다. 따라서 우리의 임무는 가능한 가장 높은 점수를 찾는 것입니다. 입력이 다음과 같은 경우 - 0 0 1 1 1 0 1 0 1 1 0 0 토글 후 행렬은 -이므로 출력은 39가 됩니다. 1 1 1 1 1 0 0 1
N보다 크거나 같은 가장 작은 소수 회문을 찾아야 한다고 가정합니다. 따라서 N이 13이면 가장 작은 회문은 101이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − N이 8~11 범위에 있으면 11을 반환합니다. 1에서 99999 사이의 i에 대해 s :=i를 문자열로 r :=s 리버스 r num :=인덱스 1에서 s와 r의 부분 문자열을 연결한 다음 숫자로 변환 =N이고 num이 소수이면 num을 반환 0 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예
양의 정수 N이 있다고 가정하고 선행 숫자가 0이 아닌 임의의 순서(원래 순서 포함)로 숫자를 재정렬합니다. 결과 숫자가 2의 거듭제곱이 되도록 이 작업을 수행할 수 있는지 확인해야 합니다. 따라서 숫자가 46과 같으면 답은 참이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − count라는 메서드를 정의하면 x가 입력으로 사용됩니다. ret :=0 x가 0이 아닌 동안 ret :=ret + 10 ^ x의 마지막 숫자 x :=x / 10 리턴 렛 주요 방법에서 다음을 수행하십시
시퀀스 X_1, X_2, ..., X_n이 다음과 같은 경우 피보나치와 같다고 가정합니다. =3 X_i + X_{i+1} =모든 i + 2 <=n에 대해 X_{i+2} 이제 시퀀스를 형성하는 양의 정수로 구성된 엄격하게 증가하는 배열 A를 가정하고 A의 가장 긴 피보나치 유사 부분 시퀀스의 길이를 찾아야 합니다. 존재하지 않는 경우 0을 반환합니다. 따라서 숫자가 [1,2 ,3,4,5,6,7,8]이면 출력은 5가 됩니다. 피보나치인 가장 긴 부분 수열은 [1,2,3,5,8]과 같습니다. 이 문제를 해결하기 위해 다음
N개의 바나나 더미가 있다고 가정하고 i번째 더미에는 [i]개의 바나나가 있습니다. 여기 경비병이 갔고 H 시간 안에 돌아올 것입니다. Koko는 시간당 바나나 먹는 속도를 K로 결정할 수 있습니다. 매시간 그녀는 바나나 더미를 가져와서 그 더미에서 K 바나나를 먹습니다. 더미에 K개 미만의 바나나가 있는 경우 그녀는 대신 바나나를 모두 소비하고 이 시간 동안 더 이상 바나나를 먹지 않습니다. Koko는 천천히 먹는 것을 좋아하지만 경비원이 돌아오기 전에 바나나를 다 먹고 싶어한다고 생각해 보십시오. 우리는 그녀가 H 시간 내에 모
Alex와 Lee 두 명의 플레이어가 돌 더미를 가지고 게임을 한다고 가정해 보겠습니다. 짝수 개의 말뚝이 일렬로 배열되어 있고, 각 말뚝에는 몇 개의 돌더미[i]가 있습니다. 게임의 목표는 가장 많은 돌로 끝나는 것입니다. 돌의 총 개수가 홀수이면 동점이 없습니다. Alex와 Lee가 번갈아 가며 Alex가 먼저 출발합니다. 각 턴에서 플레이어는 줄의 시작이나 끝에서 전체 돌 더미를 가져옵니다. 이것은 더 이상 더미가 남지 않을 때까지 계속되며, 그 시점에서 가장 많은 돌을 가진 사람이 승리합니다. Alex와 Lee가 최적으로 플
people이라는 배열이 있다고 가정합니다. 이제 i번째 사람은 사람[i]의 무게를 가지며 각 보트는 최대 무게를 실을 수 있습니다. 각 보트가 동시에 최대 2명을 태울 경우, 그 사람들의 무게의 합이 최대 한계인 경우에 한합니다. 우리는 주어진 모든 사람을 태울 수 있는 최소 보트 수를 찾아야 합니다. 따라서 입력이 [3,2,1,2]이고 제한이 3이면 3개의 보트가 필요합니다. [(1,2), (2), (3)]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 사람들 배열 정렬 i :=0, j :=사람 배열의 크기
R 행과 C 열이 있는 2차원 그리드가 있다고 가정하고 동쪽을 향한 (r0, c0)에서 시작합니다. 여기서 그리드의 북서쪽 모서리는 첫 번째 행과 열에 있고 그리드의 남동쪽 모서리는 마지막 행과 열에 있습니다. 우리는 이 그리드의 모든 위치를 방문하기 위해 시계 방향 나선 모양으로 걸을 것입니다. 그리드 경계 외부에 있을 때 그리드 외부로 계속 걸어갑니다(그러나 나중에 그리드 경계로 돌아올 수 있음). 방문한 순서대로 그리드의 위치를 나타내는 좌표 목록을 찾아야 합니다. 따라서 그리드가 다음과 같은 경우 - 그러면 화살표가
N명의 사람들이 있다고 가정하고(1, 2, ..., N으로 번호가 매겨짐) 모든 사람을 크기에 관계없이 두 개의 하위 그룹으로 나누고 싶습니다. 이제 각 사람은 다른 사람을 싫어할 수 있으며 같은 그룹에 들어가지 않아야 합니다. 따라서 [i] =[a, b]를 싫어하면, b와 번호가 지정된 사람들을 같은 그룹에 넣을 수 없음을 나타냅니다. 이런 식으로 모든 사람을 두 그룹으로 나눌 수 있는지 찾아야 합니다. 따라서 입력이 N =4이고 싫어함 =[[1,2],[1,3],[2,4]]인 경우 출력은 true이고 그룹은 [1,4] 및 [2
음이 아닌 정수의 배열 A가 있다고 가정합니다. 모든 (인접한) 하위 배열에 대해 B =[A[i], A[i+1], ..., A[j]] (i <=j 사용)에 대해 모든 요소의 비트 OR을 수행합니다. B, 결과 얻기 A[i] | A[i+1] | ... | 에이[제]. 가능한 결과의 수를 찾아야 합니다. (두 번 이상 발생한 결과는 최종 답변에서 한 번만 계산됩니다.) 따라서 입력이 [1,1,2]와 같으면 하위 배열이 [1], [1], [2], [1,1], [1,2], [1, 1,2], 결과는 1,1,2,1,3,3이 되고 세 가지 다
실행 길이로 인코딩된 시퀀스를 반복하는 반복자를 생성해야 한다고 가정합니다. 여기서 반복자는 RLEIterator(int[] A)를 호출하여 초기화됩니다. 여기서 A는 시퀀스의 실행 길이 인코딩입니다. 따라서 모든 짝수 i에 대해 A[i]는 음이 아닌 정수 값 A[i+1]이 시퀀스에서 반복되는 횟수를 알려줍니다. 여기서 iterator는 하나의 기능을 지원합니다 - =1)를 소진하고 이러한 방식으로 소진된 마지막 요소를 반환합니다. 따라서 소진할 요소가 남아 있지 않으면 next는 대신 -1을 반환합니다. 시퀀스 [8,8,
정수 배열 A가 있다고 가정하고 각 정수 A[i]에 대해 x =-K 또는 x =K를 선택하고 A[i]에 x를 추가해야 합니다(한 번만). 따라서 이 과정 후에 배열 B가 있습니다. B의 최대값과 B의 최소값 사이에서 가능한 가장 작은 차이를 찾아야 합니다. 따라서 입력이 A =[0,10], K =2인 경우 출력은 B =[2,8]이므로 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − set ret :=0, n :=배열 A의 크기 배열 A 정렬 set ret :=A의 마지막 요소 – A의 첫 번째 요
선거에서 시간[i]에 사람[i]에 대해 i번째 투표가 행해졌다고 가정합니다. 이제 다음 쿼리 함수를 구현해야 합니다. TopVotedCandidate.q(int t) 이것은 시간 t에서 선거를 주도한 사람의 번호를 찾습니다. 시간 t에 투표가 쿼리에 포함됩니다. 동점인 경우 가장 최근의 투표(동점한 후보자 중)가 이깁니다. 따라서 이것을 TopVotedCandidate([0,1,1,0,0,1,0], [0,5,10,15,20,25,30])로 초기화하면 다음과 같이 q()를 호출합니다. q( 3), q(12), q(25), q(15)
정수 배열이 있다고 가정합니다. 오름차순으로 정렬해야 합니다. 따라서 배열이 [5,2,3,1]과 같으면 결과는 [1,2,3,5]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 파티션이라는 하나의 방법을 만드십시오. 이것은 배열, 낮음 및 높음을 취합니다. 피벗 설정 :=낮음 낮은 범위에서 높은 범위의 i에 대해 – 1 nums[i]
배열 A가 있다고 가정하고 왼쪽과 오른쪽 두 개의 하위 배열로 분할해야 다음과 같이 됩니다. - 왼쪽 부분배열의 모든 요소는 오른쪽 부분배열의 모든 요소보다 작거나 같습니다. 왼쪽 및 오른쪽 하위 배열이 비어 있지 않습니다. 왼쪽 하위 배열은 가능한 가장 작은 크기를 갖습니다. 우리는 이러한 분할 후에 왼쪽의 길이를 찾아야 합니다. 그러한 파티션이 존재한다는 것은 보장됩니다. 따라서 입력이 [5,0,3,8,6]과 같으면 왼쪽 배열이 [5,0,3]이 되고 오른쪽 하위 배열이 [8,6]이 되기 때문에 출력이 3이
0과 1의 문자열이 주어진다고 가정합니다. 해당 문자열은 0(0일 수도 있음)에 이어 1(0일 수도 있음)로 구성된 경우 단조롭게 증가합니다. 우리는 0과 1의 문자열 S를 가지고 있으며 0을 1로 또는 1을 0으로 뒤집을 수 있습니다. S 모노톤을 증가시키기 위한 최소 뒤집기 횟수를 찾으십시오. 따라서 입력이 010110과 같으면 출력은 2가 됩니다. 뒤집으면 011111 또는 000111을 얻을 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=S의 크기, 설정 flipCount :=0, oneCo
0과 1의 배열 A가 주어졌다고 가정하고, 우리는 합이 S인 비어 있지 않은 하위 배열이 몇 개나 찾아야 할까요? 따라서 입력이 [1,0,1,0,1]이고 S =2인 경우 하위 배열이 [1,0,1,0,1], [1,0]이므로 결과는 4가 됩니다. ,1,0,1], [1,0,1,0,1], [1,0,1,0,1]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − atMost()라는 메서드를 정의하면 배열 A와 정수 x가 사용됩니다. x <0이면 0을 반환하고 j :=0을 설정하고 ret :=0을 설정합니다. 범위 0에서