표현식이 있다고 가정합니다. 표현식에는 일부 괄호가 있습니다. 괄호의 균형이 맞는지 확인해야 합니다. 괄호의 순서는 (), {}, []입니다. 두 개의 문자열이 있다고 가정합니다. ()[(){()}]는 유효하지만 {[}]는 유효하지 않습니다. 작업은 간단합니다. 우리는 이것을 하기 위해 스택을 사용할 것입니다. 솔루션을 얻으려면 다음 단계를 따라야 합니다 − 소진될 때까지 표현식을 탐색합니다. 현재 문자가 (, { 또는 [, 스택에 푸시와 같은 여는 대괄호인 경우) 현재 문자가 ), } 또는 ]와 같은 닫는 대괄호
n개의 계단이 있습니다. 한 사람은 1~n계단으로 갑니다. 한 걸음에 얼마나 많은 계단을 넘을 수 있는지도 나와 있습니다. 이 정보를 가지고 n번째 계단으로 갈 수 있는 가능한 방법을 찾아야 합니다. 각 단계에서 최대 두 개의 계단을 건널 수 있다고 가정해 보겠습니다. 따라서 이 문제를 해결하기 위해 재귀 관계를 찾을 수 있습니다. (n-1)번째 계단이나 (n-2)번째 계단에서 n번째 계단으로 이동할 수 있습니다. 그래서 way(n) =way(n-1) + way(n-2). 계단의 수를 10이라고 하고 한 단계에서 점프할 수 있는
파스칼의 삼각형은 이항 계수의 배열입니다. 맨 위 행은 n=0으로 번호가 매겨지고 각 행에는 왼쪽부터 k =0으로 번호가 매겨집니다. 각 숫자는 이전 행과 현재 셀의 정확히 맨 위에 있는 두 개의 숫자를 더하여 찾습니다. 또한 행 번호 n과 열 번호 k에 대해 (𝑛𝑘)를 찾아 구성됩니다. 입력이 10이라고 가정하면 출력은 다음과 같습니다. - 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 280 36 84 12
7/2를 볼 수 있습니다. 배열에서 x의 발생 횟수를 셀 수 있으며, 숫자가 n/2보다 크면 대답은 참이고 그렇지 않으면 거짓입니다. 예시(C++) #include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){ int freq = 0; for(int i = 0; i<n; i++){ if(arr[
엑셀 열 번호는 알파벳으로 되어 있습니다. A에서 시작하여 Z 다음에는 AA, AB, ZZ, 다시 AAA, AAB, ZZZ 순으로 진행됩니다. 따라서 열 1은 A, 열 27은 Z입니다. 여기에서 열 수가 지정된 경우 열 문자를 얻는 방법을 살펴보겠습니다. 따라서 열 번호가 80이면 CB가 됩니다. 숫자 n이 있고 그 값이 28이라고 가정하면 26으로 알림을 받아야 합니다. 나머지가 0이면 숫자는 26, 52 등입니다. 그런 다음 출력 문자열에 Z를 넣습니다. n의 값은 n/26 – 1이 됩니다. 나머지가 0이 아니면 문자열에 그에
여기에서는 임의의 숫자의 계승 결과에 대해 후행 0의 수를 계산하는 방법을 볼 것입니다. 따라서 n =5이면 5입니다! =120. 뒤에 0이 하나만 있습니다. 20을 위해! 그것은 20으로 4개의 0이 될 것입니다! =2432902008176640000. 가장 쉬운 방법은 계승을 계산하고 0을 계산하는 것입니다. 그러나 이 접근 방식은 n의 큰 값에 대해 실패합니다. 그래서 우리는 다른 접근 방식을 따를 것입니다. 소인수가 2와 5이면 후행 0이 있을 것입니다. 2와 5를 계산하면 결과를 얻을 수 있습니다. 이를 위해 우리는 이
못생긴 숫자는 소인수가 2, 3 또는 5인 숫자입니다. 1부터 15까지 11개의 못생긴 숫자 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15가 있습니다. 숫자 7 , 11, 13은 소수이기 때문에 못생긴 것이 아닙니다. 숫자 14는 소인수에 7이 올 것이기 때문에 못생긴 것이 아닙니다. 10번째 못생긴 숫자를 확인하고 싶다고 가정해 봅시다. 값은 12입니다. 아이디어를 얻기 위해 다음 알고리즘을 살펴보겠습니다 - 알고리즘 getUglyNumbers(n) 입력 − 용어의 수. 출력 − n번째 못생긴 숫자를 찾습
정수 배열이 있다고 가정합니다. 인덱스 i에서 j까지 존재하는 요소의 합을 찾아야 합니다. 배열은 변경할 수 없으므로 요소가 변경되지 않으며 이러한 쿼리가 여러 개 있을 것이라는 두 가지 사항을 염두에 두어야 합니다. 따라서 많은 수의 쿼리에 대한 실행 시간에 신경을 써야 합니다. 배열이 A =[5, 8, 3, 6, 1, 2, 5]와 같다고 가정하고 쿼리가 (A, 0, 3)이면 5 + 8 + 3 + 6 =22가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 배열 B 하나를 가져옵니다. B[i]는 0에서 i까지의 요
값 n이 있다고 가정하면 n번째 트리보나치 수를 생성해야 합니다. 트리보나치 수는 피보나치 수와 유사하지만 여기서는 이전 항 3개를 추가하여 항을 생성합니다. T(n)을 생성한다고 가정하면 공식은 다음과 같습니다. - T(n) = T(n - 1) + T(n - 2) + T(n - 3) 시작하는 처음 몇 개의 숫자는 {0, 1, 1}입니다. 이 알고리즘을 따르면 해결할 수 있습니다 - 알고리즘 • first := 0, second := 1, third := 1 • for i in range n – 3,
날짜(일, 월, 연도)가 있다고 가정합니다. 이 날짜로부터 주어진 날짜의 요일을 찾아야 합니다. 이를 해결하기 위해 Zeller의 알고리즘을 사용합니다. Zeller의 알고리즘을 사용하여 요일을 구하는 공식은 여기 𝑤=$$\l그룹 d+\lfloor \frac{13(m+1)}{5} \rfloor+y+\lfloor\frac{y}{4} \rfloor+\lfloor\frac{c}{4} \rfloor +5c \r그룹 모드 7$$ 수식에 일부 변수가 포함되어 있습니다. 그들은 - d − 날짜의 날짜입니다. m - 월 코드입니다. 3~
산술 진행의 요소를 순서대로 나타내는 배열이 있다고 가정합니다. 하나의 요소가 누락되었습니다. 누락된 요소를 찾아야 합니다. 따라서 arr =[2, 4, 8, 10, 12, 14]인 경우 6이 없기 때문에 출력은 6입니다. 이진 검색을 사용하여 이 문제를 해결할 수 있습니다. 중간 요소로 이동한 다음 중간과 중간 옆의 차이가 diff와 같은지 확인합니다. 그렇지 않은 경우 누락된 요소는 인덱스 mid와 mid + 1 사이에 존재합니다. 중간 요소가 AP의 n/2번째 요소이면 누락된 요소는 오른쪽 절반에 있고 그렇지 않으면 왼쪽 절
설명 알 수 없는 지점에서 회전하는 고유한 요소의 정렬된 배열이 주어지면 작업은 그 안에 있는 최대 요소를 찾는 것입니다. 예시 입력 배열이 {30, 40, 50, 10, 20}인 경우 최대 요소는 50입니다. 알고리즘 최대 요소는 그 다음이 그보다 작은 유일한 요소입니다. 다음으로 작은 요소가 없으면 회전이 없습니다. 즉, 마지막 요소가 최대값입니다. 중간 요소에 대한 이 조건을 mid – 1 및 mid + 1에 있는 요소와 비교하여 확인합니다. 최대 요소가 mid – 1 및 mid + 1에 있는 요소와 비교하여 확인합니다.
문제 설명 매우 큰 정수 배열이 주어지면 멀티스레딩을 사용하여 배열 내에서 최대값 찾기 예시 입력 배열이 {10, 14, -10, 8, 25, 46, 85, 1673, 63, 65, 93, 101, 125, 50, 73, 548}이면 이 배열의 최대 요소는 1673입니다. 알고리즘 배열 크기를 total_elements라고 합시다 N개의 스레드 생성 각 스레드는 (total_elementes/N) 배열 요소를 처리하고 여기에서 최대 요소를 찾습니다. 마지막으로 각 스레드에서 보고한 최대값에서 최대값을 계산합니다. 예시 #i
문제 설명 주어진 배열 arr[]. arr[]에서 인덱스 i에 대한 접미사 합이기도 한 접두사 합의 최대값을 찾습니다. 예시 입력 배열이 -인 경우 Arr[] ={1, 2, 3, 5, 3, 2, 1} 그러면 출력은 −와 같이 11입니다. 접두어 합계 =arr[0..3] =1 + 2 + 3 + 5 =11 및 접미사 합계 =arr[3..6] =5 + 3 + 2 + 1 =11 알고리즘 배열을 탐색하고 배열 presum[]의 각 인덱스에 대한 접두사 합계를 저장합니다. 여기서 presum[i]는 하위 배열 arr[0..i]의 합
프로그래밍에서 데이터 유형은 사용자가 사용하려는 데이터의 유형과 특성을 나타냅니다. 컴파일러나 인터프리터가 처리할 데이터 유형이며 메인 메모리에 해당 저장 위치를 제공합니다. 이제 데이터의 특성에 따라 데이터 유형은 크게 기본 데이터 유형과 파생 데이터 유형의 두 가지 유형이 있습니다. 이 두 데이터 유형 모두 프로그래밍에 사용되며 데이터에 대한 비즈니스 로직을 구현해야 할 때 똑같이 중요합니다. 다음은 기본 데이터 유형과 파생 데이터 유형 간의 중요한 차이점입니다. Sr. 아니요. 키 기본 데이터 유형 파생 데이터 유형
문제 설명 주어진 문자열이 팰린드롬으로 배열될 수 있는 하위 문자열의 최대 길이를 찾는 것이 작업입니다. 예시 입력 문자열 =5432112356이면 최대 회문 부분 문자열이 321123이고 길이가 6이므로 답은 6입니다. 알고리즘 하위 문자열의 길이가 홀수이면 최종 솔루션에서 고려할 수 없습니다. 하위 문자열의 길이가 짝수이면 해당 하위 문자열의 각 문자가 짝수 번 발생해야 사전 수를 사용하여 수행할 수 있는 경우에만 가능한 솔루션이 될 수 있습니다. 각 문자가 짝수번 나오는지 확인합니다. 그렇다면 가능한 솔루션 중 하나로 포
문제 설명 토너먼트를 하는 N명의 플레이어가 있습니다. 승자가 할 수 있는 최대 게임 수를 찾아야 합니다. 이 토너먼트에서는 두 명의 플레이어가 플레이한 게임 간의 차이가 1개 이하인 경우에만 서로 대결할 수 있습니다. 예시 3명의 플레이어가 있는 경우 다음과 같이 승자를 결정하기 위해 2개의 게임이 필요합니다 - 게임 – 1:플레이어 1 대 플레이어 2 게임 - 2:플레이어 2 대 게임 - 1의 승자 알고리즘 우선 승자가 x 게임을 플레이하는 데 필요한 최소 플레이어 수를 계산하여 이 문제를 해결할 수 있습니다. 이것이
문제 설명 배열이 주어지면 모든 (i+1)th 수준은 이전 수준보다 더 큰 합계를 가진 더 많은 요소를 포함합니다. 예시 입력 배열이 {40, 100, 20, 30}이면 답은 −와 같이 2입니다. 피라미드의 맨 아래 수준에는 100과 20이 있고 피라미드의 상위 수준에는 40 또는 30이 있습니다. 알고리즘 우리의 솔루션은 피라미드에 대해 가능한 최대 높이 h가 있는 경우 ( h * (h + 1) ) / 2개의 요소가 배열에 있어야 한다는 논리에 있습니다. 예시 #include <bits/stdc++.h> usin
문제 설명 N개의 요소(0 ≤ arr[i] ≤ 1000)의 배열 arr[]이 제공됩니다. 작업은 못생긴 숫자만 포함하는 하위 배열의 최대 길이를 찾는 것입니다. 못생긴 숫자는 소인수가 2, 3 또는 5뿐인 숫자입니다. 예를 들어 아래는 시리즈의 몇 가지 숫자입니다:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15,… 예시 입력 배열이 {1, 2, 7, 9, 120, 810, 374}이면 답은 −와 같이 3입니다. 못생긴 숫자 sis {9, 120, 810}의 가능한 가장 긴 하위 배열 알고리즘 unordere
문제 설명 배열에서 n개의 막대 길이가 주어집니다. 누군가가 막대를 선택하면 가장 긴 막대의 절반(또는 (최대 + 1) / 2 )을 할당하고 나머지 부분(최대 – 1) / 2를 다시 넣습니다. 충분한 수의 막대가 항상 사용 가능하다고 가정할 수 있으며, qi가 1부터 시작하는 유효한 사람 번호인 경우 배열 q[]에 제공된 M 쿼리에 응답하여 qith 사람이 사용할 수 있는 최대 막대 길이를 찾습니다. 예시 Input : a[] = {6, 5, 9, 10, 12} q[] = {1, 3} Output : 12