이 문제에서는 이진 트리 BT가 주어집니다. 우리의 임무는 주어진 이진 트리에서 가장 큰 BST 하위 트리를 찾는 것입니다. . 이진 트리는 데이터 저장 목적으로 사용되는 특수 데이터 구조입니다. 바이너리 트리에는 각 노드가 최대 2개의 자식을 가질 수 있다는 특수한 조건이 있습니다. BST(Binary Search Tree)는 모든 노드가 아래에 언급된 속성을 따르는 트리입니다 - 왼쪽 하위 트리의 키 값이 상위(루트) 노드의 키 값보다 작습니다. 오른쪽 하위 트리의 키 값이 상위(루트) 노드의 키 값보다 크거나 같
이 문제에서 우리는 숫자 N이 주어집니다. 우리의 임무는 주어진 숫자 N의 제수에서 가장 큰 좋은 숫자를 찾는 것입니다. . 좋은 숫자2입니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input : N = 15 Output : 15 설명 - Divisors of 15 : 1, 3, 5, 15. 해결 방법 문제에 대한 간단한 해결책은 N의 모든 제수를 찾는 것입니다. 그리고 그들은 그 숫자의 모든 소수의 곱으로 추출되는 가장 큰 좋은 숫자를 찾습니다. 예 솔루션 작동을 설명하는 프로그램 #include <bit
이 문제에서는 한 자리 숫자로만 구성된 N 크기의 배열 arr[]이 제공됩니다. 우리의 임무는 2, 3, 5의 가장 큰 배수를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : arr[] = {1, 0, 5, 2} Output : 510 설명 - The number 510 is divisible by all 2, 3, 5. 솔루션 접근 방식 이 문제에 대한 간단한 해결책은 생성된 숫자의 기본 분할 가능성을 확인하는 것입니다. 따라서 숫자를 2와 5로 나누어야 하는 경우 즉, 10으로 나누어야
이 문제에서는 이중 연결 목록 LL이 제공됩니다. 우리의 임무는 이중 연결 목록에서 가장 큰 노드를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : linked-list = 5 -> 2 -> 9 -> 8 -> 1 -> 3 Output : 9 해결 방법 문제를 해결하는 간단한 방법은 연결 목록을 탐색하고 max의 데이터 값이 maxVal의 데이터보다 큰 경우입니다. 연결 목록을 탐색한 후 macVal 노드 데이터를 반환합니다. 예 솔루션 작동을 설명하는 프로그램 #inc
이 문제에서는 두 개의 정수 값이 주어집니다. N은 숫자의 자릿수 개수를 나타내고 sum은 숫자의 자릿수 합을 나타냅니다. 우리의 임무는 주어진 자릿수와 자릿수의 합으로 가장 큰 수를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : N = 3, sum = 15 Output : 960 솔루션 접근 방식 문제를 해결하는 간단한 접근 방식은 모든 N 자리 숫자를 가장 큰 것에서 가장 작은 것까지 순회하는 것입니다. 숫자 합을 찾고 합과 같으면 숫자를 반환합니다. 예시 솔루션 작동을 설명하는 프로그램
이 문제에서는 두 개의 정수 값 n과 m이 제공됩니다. 우리의 임무는 n이 설정되고 m이 설정되지 않은 비트가 있는 가장 큰 수를 찾는 것입니다. 숫자의 이진 표현에서. 문제를 이해하기 위해 예를 들어보겠습니다. Input : n = 3, m = 1 Output : 14 설명 - Largest number will have 3 set bits and then 1 unset bit. (1110)2 = 14 솔루션 접근 방식 문제에 대한 간단한 해결책은 (n+m) 세트 비트로 구성된 수를 찾는 것입니다. 이 숫자에서 끝(LSB)
이 문제에서는 N개의 정렬되지 않은 요소로 구성된 arr[]이 제공됩니다. 우리의 임무는 정렬되지 않은 배열에서 가장 큰 쌍의 합을 찾는 것입니다. . 합이 최대인 쌍을 찾습니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input : arr[] = {7, 3, 9, 12, 1} Output : 21 설명 - Pair with largest sum, (9, 12). Sum = 21 솔루션 접근 방식 문제에 대한 간단한 해결책은 배열의 최대 및 두 번째 최대 요소 쌍을 만드는 것입니다. 이를 위해 배열의 첫 번째 및
이 문제에서는 N개의 정렬되지 않은 요소로 구성된 arr[]이 제공됩니다. 우리의 임무는 배열에서 가장 큰 세 요소를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : arr[] = {7, 3, 9, 12, 1} Output : 12, 9, 7 솔루션 접근 방식 기본적으로 배열에서 가장 큰 세 가지 요소를 찾아 인쇄해야 합니다. 여러 가지 방법으로 수행할 수 있습니다. 방법 1 가장 큰 3개의 요소에 대해 max, max2 및 max3 값을 보유하는 3개의 요소를 생성합니다. 이 값을 arr[0]
이 문제에서는 lValue와 hValue의 두 값이 제공됩니다. 우리의 임무는 주어진 범위에서 가장 큰 쌍둥이를 찾는 것입니다. . 두 숫자가 모두 소수이고 그 차이가 2이면 두 숫자를 쌍수라고 합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input : lValue = 65, rValue = 100 Output : 71, 73 솔루션 접근 방식 문제에 대한 간단한 해결책은 rValue - 2에서 lValue로 반복하고 i와 (i+2) 쌍의 쌍을 확인하고 처음 발생한 쌍을 인쇄하는 것입니다. 또 다른 접근 방식 범위
이 문제에서 벽의 길이 W, 선반의 크기 n, m을 나타내는 세 개의 정수 값 W, n, m이 주어집니다. 우리의 임무는 피팅 선반 문제를 해결하기 위한 프로그램을 만드는 것입니다. . 선반 설치 후 남은 공간을 최소화하는 방식으로 선반을 설치하는 방법을 찾아야 합니다. 해결하는 동안 두 번째 제약은 제작 비용이며, 선반이 클수록 비용 효율적이므로 우선 순위를 부여해야 합니다. 출력은 다음 형식이어야 합니다. n 사이즈 선반의 수 m 사이즈 선반의 남은 공간 수 문제를 이해하기 위해 예를 들어보겠습니다. Input: W
이 문제에서 우리는 Fizz-Bizz의 구현과 유형을 볼 것입니다. 문제. 피즈 버즈 - 프로그래머가 3의 모든 배수를 Fizz로 변경하는 간단한 프로그래밍 문제입니다. 및 Buzz에 의한 5의 모든 배수 1에서 100 사이의 숫자로 표시됩니다. 문제를 이해하기 위해 예를 들어보겠습니다. 1, 2, 'Fizz', 4, 'Buzz', 'Fizz' , 7, 8, 'Fizz' , 'Buzz', 11, 'Fizz' , 13, 14, 'Fi
이 문제에서는 다단계 연결 목록이 제공됩니다. 우리의 임무는 다단계 연결 목록을 평면화하는 프로그램을 만드는 것입니다. 병합 작업은 연결 목록에서 첫 번째 수준 노드가 먼저 발생하고 두 번째 수준 노드가 발생하는 방식으로 수행됩니다. 다단계 연결 목록 링크드 리스트의 모든 노드가 두 개의 링크 포인터를 가지는 다차원 데이터 구조, 하나는 다음 노드에 대한 링크이고 다른 하나는 하나 이상의 노드가 있는 자식 리스트에 대한 링크입니다. 이 자식 포인터는 다른 목록 노드를 가리킬 수도 있고 가리지 않을 수도 있습니다. 예시 문제
이 문제에서는 오른쪽과 아래쪽의 두 포인터 노드로 구성된 연결 목록이 제공됩니다. 오른쪽 노드 주요 연결 목록 포인터입니다. 다운 노드 해당 노드로 시작하는 보조 연결 목록용입니다. 모든 연결 목록이 정렬됩니다. 우리의 임무는 연결 목록을 평면화하는 프로그램을 만드는 것이며 결과 목록 자체는 정렬된 목록이 될 것입니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 출력 1-> 9-> 8 -> 4 -> 6-> 7-> 2-> 3-> 5 솔루션 접근 방식 문
이 문제에서 양의 정수 N이 주어집니다. 우리의 임무는 주어진 숫자가 절약 숫자인지 여부를 확인하는 프로그램을 만드는 것입니다. 단순한 숫자 - 자릿수가 주어진 수의 소인수분해에서 자릿수보다 엄격하게 큰 수입니다. 예 − 625, 숫자 625의 소인수는 54입니다. . 625의 자릿수는 3입니다. 54의 자릿수 2입니다. 3은 2보다 엄격하게 큽니다. 따라서 625는 검소한 숫자입니다. 처음 몇 개의 알뜰한 숫자는 - 125, 128, 243, 256, 343, 512, 625 등 문제를 이해하기 위해 예를 들어보겠습
님의 게임이라는 이 문제에서 , 돌 더미를 나타내는 양의 정수 N이 주어지고 두 명의 플레이어가 있습니다. playerA 및 플레이어B . 우리의 임무는 님의 게임의 승자를 예측하는 프로그램을 만드는 것입니다. NIM 게임 − 우리는 돌 더미와 두 명의 플레이어 playerA를 가지고 있습니다. 및 플레이어B . 각 플레이어는 playerA인 경우 힙에서 하나의 상점을 선택할 수 있습니다. 더미에서 하나의 돌을 따기 시작합니다. 우리는 게임의 승자를 예측해야 합니다. 더미에서 마지막으로 돌을 고르는 플레이어가 게임의 승자가 됩니다
이 문제에서는 N개의 정수 값으로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 배열에서 짝수번 나타나는 첫 번째 요소를 찾는 프로그램을 만드는 것입니다. . 조건을 충족하는 요소가 있으면 반환하지 않으면 거짓을 나타내는 -1을 반환합니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input: arr[] = {2, 3, 7, 2, 3, 6, 4, 1, 2} Output: 3 솔루션 접근 방식 문제를 해결하는 간단한 방법은 배열의 각 요소를 하나씩 고려한 다음 해당 요소의 발생 빈도를 짝수 확인하고 배열의 첫 번째
이 문제에서는 값 n이 주어집니다. 우리의 임무는 주어진 n에 대해 (n^1 + n^2 + n^3 + n^4) mod 5의 값을 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : n= 5 Output : 0 설명 - (51 + 52 + 53 + 54) mod 5 = (5 + 25 + 125 + 625) mod 5 = (780) mode 5 = 0 해결 방법 문제에 대한 간단한 해결책은 주어진 N 값에 대한 방정식의 값을 직접 찾은 다음 5로 모듈러스를 계산하는 것입니다. 예 솔루션 작동을 설명하
이 문제에서는 두 개의 값 n과 k가 제공됩니다. 우리의 임무는 이진 표현에서 k번째 비트의 값을 찾는 것입니다. . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : n= 5, k = 2 Output : 0 설명 - Binary of 5 = 0101 Second LSB bit is 0. 솔루션 접근 방식 문제에 대한 해결책은 모든 비트가 설정되지 않은 숫자와 k번째 위치에 있는 한 비트가 설정된 숫자 N의 이진 변환에 대해 비트 AND를 수행하여 결과를 얻는 것입니다. 예시 솔루션의 작동을 설명하는 프로그램, #
프로그래밍의 루프 코드 블록을 여러 번 계산하는 데 사용됩니다. 여기에서 프로그램의 두 가지 유형의 루프인 For 루프와 While 루프의 차이점을 볼 수 있습니다. . For 루프 For 루프는 사용자가 주어진 코드 블록을 특정 횟수만큼 반복할 수 있는 일종의 반복 제어 루프입니다. 구문 for(initisation; condition; update){ …code to be repeated } 중 루프 while 루프는 사용자가 주어진 조건이 참이 될 때까지 주어진 명령문을 반복적으로 실행할
이 문제에서는 두 개의 값 x와 y가 주어집니다. 우리의 임무는 y mod의 값을 찾는 것입니다(2를 x의 거듭제곱으로 올림) . 문제를 이해하기 위해 예를 들어 보겠습니다. Input : x = 2, y = 19 Output : 3 설명 - y % 2x = 19 % 22 = 19 % 4 = 3 솔루션 접근 방식 문제에 대한 간단한 해결책은 2x 값을 직접 계산하는 것입니다. pow() 함수를 사용한 다음 y % 2x 값 찾기 . 문제를 해결하는 또 다른 방법은 로그를 사용하는 것입니다. y <2x 값의 경우 , 나머지는