이 섹션에서는 절대값이 서로 다른 요소의 수를 계산하는 방법을 살펴보겠습니다. 배열에 {5, 5, 6, -5, 8, 2, -2, 1}과 같은 요소가 거의 없다고 가정하여 8개의 요소가 있습니다. 그러나 구별되는 5개의 요소 {5, 6, 8, 2, 1}가 있습니다. -5와 5는 다른 것으로 간주되지 않고 절대값이 동일하므로 동일합니다. 이 문제를 해결하기 위해 Set 데이터 구조를 사용할 것입니다. 세트에서 중복 요소는 허용되지 않습니다. 그리고 집합에 항목을 삽입할 때 절대값만 푸시합니다. 알고리즘 absoluteDistinctC
여기서는 C 또는 C++ 프로그램을 사용하여 포물선의 꼭짓점, 초점 방향을 찾는 방법을 볼 것입니다. 이러한 매개변수를 얻으려면 포물선의 일반 방정식이 필요합니다. 일반 공식은 - 𝑦 = 𝑎𝑥2 + 𝑏𝑥 + 𝑐 , b 및 c의 값이 제공됩니다. 꼭짓점에 대한 공식 - 초점 공식 - Directrix의 공식 - y − 예시 #include <bits/stdc++.h> using namespace std; void getParabolaDetails(float a, float b, fl
여기에서 우리는 벽돌 정렬이 어떻게 작동하는지 볼 것입니다. 브릭 정렬은 버블 정렬을 수정한 것입니다. 이 알고리즘은 두 부분으로 나뉩니다. 이 부분은 홀수 부분과 짝수 부분입니다. 홀수 부분에서는 홀수 인덱스 항목에 대해 버블 정렬을 사용하고 짝수 부분에서는 짝수 인덱스 요소에 대해 버블 정렬을 사용합니다. 아이디어를 얻을 수 있는 알고리즘을 살펴보겠습니다. 알고리즘 brickSort(arr, n) begin flag := false while the flag is not true,
이 섹션에서는 숫자의 고유한 소인수를 효율적으로 곱하는 방법을 살펴보겠습니다. n =1092라는 숫자가 있습니다. 우리는 이것의 고유한 소인수의 곱을 얻어야 합니다. 1092의 소인수는 2, 2, 3, 7, 13입니다. 따라서 고유 소인수는 {2, 3, 7, 13}이고 곱은 546입니다. 이 문제를 해결하려면 다음 규칙을 따라야 합니다 - 숫자가 2의 배수일 때 2에 곱을 곱하고 숫자를 2로 반복해서 나누면 다음 2는 무시됩니다. 이제 숫자가 홀수여야 합니다. 이제 숫자의 3부터 제곱근까지 숫자가 현재 값으로 나누어지면
여기서 우리는 결과를 n으로 나눈 후 배열 곱셈의 나머지를 계산하는 방법을 볼 것입니다. 배열과 n 값은 사용자가 제공합니다. 배열이 {12, 35, 69, 74, 165, 54}와 같으므로 곱셈은 (12 * 35 * 69 * 74 * 165 * 54) =19107673200이 됩니다. 이제 이것을 다이빙한 후 나머지를 얻으려면 47이면 14가 됩니다. 우리가 볼 수 있듯이 이 문제는 매우 간단합니다. 요소를 쉽게 곱한 다음 모듈러스 연산자를 사용하여 결과를 얻을 수 있습니다. 그러나 주요 문제는 곱셈을 계산할 때 정수의 범위를
여기서 우리는 두 개의 n자리 숫자를 더하지만 캐리가 전파되지 않는 한 가지 문제를 볼 것입니다. 예제를 통해 이 개념을 이해할 수 있습니다. − 따라서 여기에 숫자만 추가되고 답변이 배치되는 것을 볼 수 있습니다. 여기에 한 가지 트릭이 있습니다. 오른쪽에서 왼쪽으로 숫자를 스캔해야 합니다. 따라서 3+2 =6의 합이 먼저 계산되지만 끝에 배치됩니다. 그래서 우리는 중간 결과를 저장하기 위해 스택을 사용할 것입니다. 알고리즘 noPropagateCarry(a, b) begin size = max of
여기에서 우리는 C++에서 sizeof와 alignof 연산자의 차이점을 볼 것입니다. lognof() 연산자는 C++11에 도입되었습니다. alignof() 연산자는 바이트 단위로 정렬을 가져오는 데 사용됩니다. 유형의 인스턴스가 필요합니다. 유형은 전체 유형 또는 참조 유형입니다. 한 유형의 크기를 반환하는 sizeof() 연산자라는 또 다른 연산자가 있습니다. 일반 데이터 유형의 경우 sizeof 및 alignof는 동일한 값을 반환합니다. 일부 사용자 정의 데이터 유형의 경우 alignof는 다른 값을 반환합니다. 아이디어
이 섹션에서는 문자열의 모든 순열을 얻는 방법을 볼 것입니다. 재귀적 접근 방식은 매우 간단합니다. 역추적 절차를 사용합니다. 하지만 여기서는 반복적인 접근 방식을 사용할 것입니다. 문자열 ABC의 모든 순열은 {ABC, ACB, BAC, BCA, CAB, CBA}와 같습니다. 더 나은 아이디어를 얻기 위해 알고리즘을 살펴보겠습니다. 알고리즘 getAllPerm(str) begin sort the characters of the string while true, do &n
여기서 우리는 x, y 축과 또 다른 직선이 이루는 삼각형의 넓이를 구하는 방법을 볼 것입니다. 다이어그램은 아래와 같을 것입니다. 직선의 방정식은 - 𝑎𝑥+𝑏𝑦+𝑐=0 선은 점 B에서 x축을 자르고 점 A에서 y축을 자르고 있습니다. 절편 형태는 아래와 같을 것입니다 - 따라서 x절편은 −𝑐∕𝑎이고 y절편은 −𝑐∕𝑏입니다. 따라서 삼각형의 넓이는 예시 #include<iostream> #include<cmath> using namespace std; double areaTria
여기에서 우리는 C 또는 C++의 인수 강제에 대해 볼 것입니다. Argument Coercion은 컴파일러가 한 형식에서 다른 형식으로 인수를 암시적으로 변환할 수 있는 기술 중 하나입니다. 인수승진 규칙을 따릅니다. 하나의 인수가 하위 데이터 유형이면 상위 데이터 유형으로 변환할 수 있지만 그 반대는 사실이 아닙니다. 그 이유는 하나의 상위 데이터 유형을 하위 데이터 유형으로 변환하면 일부 데이터가 손실될 수 있기 때문입니다. 암시적 변환이 발생하는 방식을 표현할 수 있는 피라미드를 살펴보겠습니다. 예시 #include&l
여기서는 주어진 수를 재배열하여 가장 큰 수를 생성하는 방법을 살펴보겠습니다. {45, 74, 23}이 주어졌다고 가정하면 프로그램은 가장 큰 수, 즉 744523을 찾습니다. 따라서 각 자릿수는 정렬되지 않습니다. 그러나 가장 큰 수를 만들기 위해 정수를 배치합니다. 이 문제를 해결하기 위해 문자열 정렬을 사용합니다. 그러나 비교 논리는 다릅니다. 비교 함수는 두 개의 숫자와 b를 취하여 연결하여 ab와 ba를 형성합니다. 그 중 어느 것이 더 큰지 고려합니다. 알고리즘 문자열 비교(a, b) begin
여기에서 ASCII NUL, ASCII 0 및 Numeric Literal 0을 볼 수 있습니다. ASCII null은 0x00으로 표시되고 0은 0x30으로 표시됩니다. ASCII NUL 문자는 C 또는 C++에서 문자열의 끝을 나타내는 데 사용됩니다. 프로그래머가 0(문자 0)을 사용하면 0x30으로 처리됩니다. 이것은 16진수입니다. 해당하는 십진수는 48입니다. ASCII NUL을 입력하려면 0 대신 \0을 언급해야 합니다. char asciiNul = ‘\0’; int zero = 0; char zer
여기서는 n개의 홀수 자연수의 평균을 구하는 방법을 살펴보겠습니다. n은 사용자가 제공합니다. i번째 홀수를 얻으려면 이 공식 2*i+1을 사용할 수 있습니다. 여기에서도 이 공식을 사용하고 있습니다. 명확한 아이디어를 얻기 위해 알고리즘을 살펴보겠습니다. 알고리즘 avgOddNaturalNumber(n) Begin sum := 0 for i in range 0 to n-1, do sum := sum + (2i + 1) don
여기서 우리는 주어진 문자열에서 각 문자의 ASCII 값의 평균을 계산하는 방법을 볼 것입니다. 문자열이 ABC라고 가정합니다. asci 값은 65, 66, 67입니다. 따라서 이 세 값의 평균은 66입니다. 알고리즘 asciiAverage(문자열) Begin sum := 0 for each character c in String, do sum := sum + ASCII of c done return s
숫자가 회문인지 아닌지를 확인하려면 숫자를 반대로 해야 하고 실제 숫자와 역 숫자가 같으면 회문입니다. Bash에서 역동작을 수행하는 것은 매우 쉽습니다. 그렇게 하려면 rev 명령을 사용해야 합니다. 프로그램을 보다 명확하게 이해하도록 합시다. 예 #!/bin/bash # GNU bash Script n=12321 rev=$(echo $n | rev) if [ $n -eq $rev ]; then echo "Number is palindrome" else echo &q
여기서 우리는 bash 스크립트를 사용하여 숫자 A를 B의 거듭제곱으로 올리는 방법을 볼 것입니다. 논리는 매우 간단합니다. 이를 수행하려면 ** 연산자 또는 거듭제곱 연산자를 사용해야 합니다. 개념을 명확하게 이해하기 위해 다음 프로그램을 보자. 예시 #!/bin/bash # GNU bash Script a=5 b=6 echo "$(($a ** $b))" 출력 15625
여기에서 같은 크기의 정렬된 두 배열의 중앙값을 구하는 방법을 살펴보겠습니다. C++ STL을 사용하여 배열 요소를 저장합니다. 두 개의 배열을 얻은 후 하나로 병합합니다. 크기가 같은 두 개의 배열이 병합되면 최종 배열은 항상 짝수의 요소를 보유합니다. 중간 요소 2개를 가져와서 중간값에 대한 평균을 구해야 합니다. 알고리즘 중앙값(arr1, arr2) Begin arr3 := array after merging arr1 and arr2 sort arr3 len
여기서 우리는 하나의 C 프로그램을 작성하여 복리 이자를 얻는 방법을 볼 것입니다. 논리는 매우 쉽습니다. 여기에 몇 가지 매개변수가 필요합니다 - P - 원리금 R − 이자율 T - 시간 범위 복리식은 아래와 같습니다. 예시 #include<stdio.h> #include<math.h> float compoundInterest(float P, float T, float R) { return P*(pow(1+(R/100), T)); } int main() { &nbs
이 문제에서 우리는 처음 n개의 자연수의 세제곱의 합을 구하는 방법을 볼 것입니다. 여기서 우리는 1에서 n까지 실행되는 하나의 for 루프를 사용하고 있습니다. 각 단계에서 우리는 항의 세제곱을 계산한 다음 합계에 더합니다. 이 프로그램은 완료하는 데 O(n) 시간이 걸립니다. 그러나 이것을 O(1) 또는 일정한 시간으로 풀고 싶다면 이 급수 공식을 사용할 수 있습니다 - 알고리즘 큐브N내츄럴(n) begin sum := 0 for i in range 1 to n, do  
하나의 긴 정수가 있다고 가정합니다. 홀수 자리 숫자의 합과 짝수 자리 숫자의 합 사이의 차이가 0인지 아닌지를 찾아야 합니다. 위치는 0(가장 왼쪽)부터 시작됩니다. 예를 들어, 숫자가 156486이라고 가정합니다. 홀수 위치 합은 (5 + 4 + 6) =15이고 짝수 위치 합은 (1 + 6 + 8) =15이므로 동일합니다. 이 문제를 해결하기 위해 두 가지 다른 방법을 사용할 수 있습니다. 첫 번째 방법은 시작에서 끝으로 형식을 순회하고 위치를 변경하여 합계를 얻은 다음 차이를 구하는 것입니다. 다음 방법은 더 간단하고 효율