문제 설명 주어진 배열 arr에서 작업은 배열을 양호하게 만들기 위해 제거할 요소의 최소 수를 찾는 것입니다. 시퀀스 a1, a2, a3. . .an은 각 요소 a[i]에 대해 a[i] + a[j]가 2의 거듭제곱이 되도록 요소 a[j](i는 j와 같지 않음)가 존재하는 경우 양호라고 합니다. arr1[] = {1, 1, 7, 1, 5} 위의 배열에서 요소 5를 삭제하면 배열이 좋은 배열이 됩니다. 이 후 arr[i] + arr[j]의 쌍은 2의 거듭제곱 -입니다. arr[0] + arr[1] =(1 + 1) =2의 2승 a
문제 설명 크기가 n이고 요소가 x인 배열 arr이 주어지면 중앙값이 x와 같도록 배열에 추가할 요소의 최소 수를 찾는 것이 작업입니다. 길이가 n인 배열의 중앙값은 요소를 내림차순으로 정렬한 후 위치 번호 (n-1)/2를 차지하는 요소입니다. 예를 들어, 아래 배열 중앙값은 20 −입니다. arr1[] ={10, 20, 30, 40} arr[] ={1, 2, 3}이고 x =4이면 중앙값이 4가 되도록 배열에 4개의 숫자, 즉 {4, 5, 5, 5}를 추가해야 합니다. 알고리즘 알고리즘은 매우 간단합니다. 배열의 중앙값이
문제 설명 주어진 숫자 N. 나머지 요소에서 얻은 XOR이 최대가 되도록 N에서 제거할 요소의 최소 수를 찾는 것입니다. 알고리즘 1. If n is 1 or 2 then there is no need to remove any element. Hence answer is zero 2. Find a number which is power of 2 and greater than or equal to. Let us call this number as nextNumber 2.1. If n == nextNumber
문제 설명 선행 0이 없는 숫자 N이 주어집니다. 작업은 N을 25로 나누는 데 필요한 최소 이동 횟수를 찾는 것입니다. 각 이동에서 두 개의 인접한 숫자를 바꿀 수 있으며 항상 숫자에 선행 0이 포함되어서는 안 됩니다. N을 25로 나눌 수 없으면 -1을 인쇄하십시오. N =5071이면 25로 나누어 떨어지도록 4번 이동해야 합니다. 5071 → 5701 → 7501 → 7510 → 7150 알고리즘 1. Iterate over all pairs of digits in the number.
문제 설명 두 개의 문자열 str1과 str2가 주어지면 두 문자열 모두 a와 b 문자를 포함합니다. 두 문자열의 길이는 동일합니다. 두 문자열 모두에 하나의 _(빈 공간)가 있습니다. 작업은 다음 작업의 최소 수를 수행하여 첫 번째 문자열을 두 번째 문자열로 변환하는 것입니다 - _가 위치 I에 있으면 _는 위치 i+1 또는 i-1에 있는 문자로 교체될 수 있습니다. 위치 i+1 및 i+2의 문자가 다른 경우 _는 위치 i+1 또는 i+2의 문자로 교체될 수 있습니다. 유사하게, 위치 i-1과 i-2의 문자가 다
문제 설명 크기의 배열이 주어지면 N은 버킷을 나타내며 각 배열 인덱스에는 항목이 포함됩니다. 모든 항목이 배달되어야 하는 K 투어가 주어집니다. 하나의 투어에서 하나의 버킷에서만 항목을 가져갈 수 있습니다. 임무는 모든 물품이 K 투어 내에서 배송될 수 있도록 투어당 배송되어야 하는 최소 물품 수를 알려주는 것입니다. item ={1, 3, 5, 7, 9}인 버킷 5개가 있고 투어가 10개이면 투어당 3개의 아이템을 배달할 수 있습니다. 한 번에 3개의 아이템을 배달하여 첫 번째 버킷 크기는 1이므로 필요한 투어 수 =1
문제 설명 정수 n이 주어지고 a =1, b =2, c=3, ….., z =26이라고 가정합니다. 작업은 총 n을 만드는 데 필요한 최소 문자 수를 찾는 것입니다. If n = 23 then output is 1 If n = 72 then output is 3(26 + 26 + 20) 알고리즘 1. If n is divisible by 26 then answer is (n/26) 2. If n is not divisible by 26 then answer is (n/26) + 1입니다. 예 #include <iostream&
문제 설명 시험에 N 문제가 있고 수업에 K 학생이 있습니다. K명의 학생들 중 N명의 학생들은 정확히 한 문제씩 암기했습니다. 메일에는 최대 X개의 질문이 포함될 수 있습니다. 전체 학급이 모든 질문에 대해 알 수 있도록 필요한 최소 메일 수 찾기 N =3, K =3, X =1이면 6개의 메일을 보내야 합니다. - 학생 1이 학생 2와 학생 3에게 질문을 보냅니다(메일 2개), 학생 2와 학생 3도 마찬가지이므로 총 메일 수 =2 * 3 =6 알고리즘 최종 답은 아래 공식을 사용하여 계산할 수 있습니다. - ceil(N
문제 설명 N 요소의 배열과 정수 K가 주어지면 주어진 배열에 대해 다음 작업을 여러 번 수행할 수 있습니다. - K번째 삽입 배열 끝에 요소를 추가하고 배열의 첫 번째 요소를 삭제합니다. 작업은 배열의 모든 요소를 동일하게 만드는 데 필요한 최소 이동 횟수를 찾는 것입니다. 불가능한 경우 -1을 인쇄합니다. If arr[] = {1, 2, 3, 4, 5, 6} and k = 6 then minimum 5 moves are required: Move-1: {2, 3, 4, 5, 6, 6} Move-2: {3, 4,
문제 설명 AVL 트리의 높이가 주어지면 트리가 가질 수 있는 최소 노드 수를 찾는 것이 작업입니다. If height = 0 then AVL tree can have one 1 node If height = 5 then AVL tree can have minimum 20 nodes 알고리즘 AVL 트리에서 우리는 높이 균형 속성을 유지해야 합니다. 즉, 왼쪽 및 오른쪽 하위 트리의 높이 차이는 각 노드에 대해 -1, 0 또는 1보다 클 수 없습니다. 이 속성을 사용하여 다음과 같은 반복 관계를 만들 수 있습니다. - 1. If
문제 설명 크기가 N인 배열이 주어지고 각 요소는 1 또는 0입니다. 작업은 모든 요소를 0으로 변환하기 위해 수행할 작업의 최소 수를 계산하는 것입니다. 아래 작업을 수행할 수 있습니다. - 요소가 1이면 해당 값을 0으로 변경할 수 있습니다. 그런 다음 - 다음 연속 요소가 1이면 자동으로 0으로 변환됩니다. 다음 연속 요소가 이미 0이면 아무 일도 일어나지 않습니다. arr[] ={1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1}이면 모든 요소를 0으로 만들기 위해 4작업
문제 설명 정수 배열 arr이 주어지면 작업은 배열의 모든 요소를 삭제하는 데 필요한 최소 작업 수를 인쇄하는 것입니다. 요소를 삭제하는 동안 제한이 적용됨 - 배열의 모든 요소는 무작위로 선택될 수 있으며, 배열로 나눌 수 있는 모든 요소는 배열에서 제거될 수 있습니다. arr[] ={2, 4, 15, 10, 8, 5, 3}이면 모든 요소를 삭제하려면 3번의 작업이 필요합니다. - 2를 선택하면 {2, 4, 10, 8}이 삭제됩니다. 5를 선택하면 {5, 15}가 제거됩니다. 3을 선택하면 {3}이(가) 제거
문제 설명 주어진 이진 문자열 str. str이 나타내는 수를 생성하기 위해 수행해야 하는 최소 연산 수를 찾으십시오. 다음 작업만 수행할 수 있습니다. - 2x 추가 2x 빼기 바이너리 문자열이 1000이면 1번의 작업만 수행하면 됩니다. 즉, 23 추가 이진 문자열이 101이면 2개의 작업(예:22 추가)을 수행해야 합니다. + 20 예 #include <iostream> #include <string> #include <algorithm> using namespace std; i
문제 설명 N 페이지의 책이 주어졌을 때, 과제는 주어진 K 페이지에 도달하기 위한 최소 페이지 회전 수를 계산하는 것입니다. 책의 앞면(즉, 1페이지) 또는 뒷면(즉, N페이지)에서 페이지를 넘길 수 있습니다. 책의 페이지 수에 따라 뒷면만 있는 첫 페이지와 뒷면만 있는 마지막 페이지를 제외하고 각 페이지는 앞뒷면으로 되어 있습니다. N =5이고 K =4이면 최소 1페이지를 넘겨야 합니다 - (4,5) 뒤에서 페이지 넘김을 시작하면 (4, 5) 1턴 필요 페이지 넘김 =1 따라서 최소 페이지 수
문제 설명 숫자 N이 주어지면 N을 합으로 표현하는 데 필요한 최소 회문 수를 찾아야 합니다. N =15인 경우 2개의 회문이 필요합니다(예:8 및 7). 알고리즘 1. Generate all the palindromes up to N in a sorted fashion 2. Find the size of the smallest subset such that its sum is N 예시 #include <iostream> #include <vector> #include <climits> #incl
문제 설명 기차역에 도착하는 모든 열차의 도착 및 출발 시간이 주어지면 기차역에 필요한 최소 플랫폼 수를 찾아 열차가 기다리지 않도록 해야 합니다. 정차하는 열차의 도착 및 출발 시간을 나타내는 두 개의 배열이 제공됩니다. 아래 입력의 경우 최소 3개의 플랫폼이 필요합니다 - 훈련 도착 시간 출발 시간 기차-1 09:00 09:15 2호선 09:35 11:45 3호선 09:40 11:05 4호선 11:00 12:00 5호선 14:30 18:15 6호선 18:00 19:00 알고리즘 1. Sort arrival
문제 설명 데카르트 평면에서 N개의 점이 주어집니다. 우리의 임무는 축의 한 면에 남아 있는 점을 얻기 위해 제거해야 하는 최소 점 수를 찾는 것입니다. 주어진 입력이 {(10, 5), (-2, -5), (13, 8), (-14, 7)}이면 (-2, -5)를 제거하면 나머지 모든 점이 X 위에 있습니다. -축. 따라서 답은 1입니다. 알고리즘 1. Finds the number of points on all sides of the X-axis and Y-axis 2. Return minimum from both of them
문제 설명 두 개의 양의 정수 N과 X가 주어집니다. 작업은 X의 거듭제곱 수가 최소가 되도록 N을 X의 거듭제곱의 합(X0 + X1 +…..+ Xn)으로 표현하는 것입니다. 합을 N과 같게 만드는 데 사용된 N의 최소 거듭제곱 수를 인쇄하십시오. N =15이고 X =3이면 다음과 같이 3의 3승이 필요합니다. - 15 =(32 + 31 + 31 ) 알고리즘 최종 결과를 계산하려면 아래 공식을 사용하십시오 - 1. If x = 1, then answer will be n only (n = 1 + 1 +…. n
양수 n이 있다고 가정합니다. 우리는 그 숫자가 되는 양수의 모든 조합을 찾아야 합니다. 여기서 우리는 순열이 아닌 조합만을 원합니다. 값 n =4의 경우 [1, 1, 1, 1], [1, 1, 2], [2, 2], [1, 3], [4]가 됩니다. 우리는 재귀를 사용하여 이것을 해결할 것입니다. 조합을 저장할 배열이 있으며 재귀 접근 방식을 사용하여 해당 배열을 채울 것입니다. 각 조합은 요소의 오름차순으로 저장됩니다. 예시 #include<iostream> using namespace std; void getCombin
이 튜토리얼에서는 이진 트리의 주어진 두 레벨 번호 사이의 노드를 인쇄하는 프로그램에 대해 논의할 것입니다. 여기에서 특정 이진 트리에 대해 낮은 수준과 높은 수준이 제공되며 주어진 수준 사이의 모든 요소를 인쇄해야 합니다. 이를 해결하기 위해 대기열 기반 수준 순회를 사용할 수 있습니다. 중위 순회를 통해 이동하는 동안 각 수준의 끝에 표시 노드를 가질 수 있습니다. 그런 다음 지정된 수준 사이에 표시 노드가 있는 경우 각 수준으로 이동하여 해당 노드를 인쇄할 수 있습니다. 예시 #include <iostream>