이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 두 개의 숫자가 주어지면 이 두 숫자의 gcd를 계산하여 표시해야 합니다. 두 숫자의 GCD 최대 공약수는 두 숫자를 모두 나눌 수 있는 가장 큰 숫자입니다. 여기서 우리는 gcd를 계산하기 위해 유클리드 접근 방식을 따릅니다. 즉, 숫자를 반복적으로 나누고 나머지가 0이 되면 중지합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # euclid algorithm for calculation of greatest commo
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 이진 삽입 정렬의 개념을 사용하여 정렬해야 합니다. 여기에서는 이름에서 알 수 있듯이 삽입 정렬 알고리즘과 함께 이진 검색의 개념을 사용합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예 # sort def insertion_sort(arr): for i in range(1, len(arr)): temp = arr[i] &
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 순열 정렬 개념을 사용하여 정렬해야 합니다. BogoSort는 순열 정렬이라고도 하며 패러다임 생성 및 테스트를 기반으로 합니다. 이제 아래 구현에서 솔루션을 살펴보겠습니다- 예 # random module import random # Sort def bogoSort(a): n = len(a) while (is_sorted(a)== False):
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 우리는 목록을 받았고, 주어진 목록에 대해 bitonic 정렬을 수행하고 목록을 표시해야 합니다. 칵테일 정렬 − 여기에서 정렬은 버블 정렬과 같이 양방향으로 반복되는 방식으로 발생합니다. 알고리즘 먼저 배열은 왼쪽에서 오른쪽으로 순회됩니다. 순회하는 동안 인접한 항목을 비교하고 조건에 따라 값을 교환합니다. 이렇게 하면 배열의 끝에 가장 큰 숫자가 표시됩니다. 이제 배열이 반대 방향으로 이동하고 조건에 따라 요소가 교체됩니다. 이
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 우리는 N개의 코인을 받았고 S의 각 값이 무한대로 공급되도록 해당 코인을 변경하려고 합니다. 순서에 관계없이 변경을 수행할 수 있는 방법의 수를 표시해야 합니다. 시간 복잡성을 줄이기 위해 문제 설명을 해결하기 위해 동적 프로그래밍 개념을 사용할 것입니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # dynamic approach def count(S, m, n): # base case
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 카운트 정렬 개념을 사용하여 배열을 정렬해야 합니다. 카운팅 정렬은 특정 범위 사이의 키에 대해 작업하는 기술입니다. 고유한 키 및 값이 있는 개체의 수를 계산하는 작업이 포함됩니다. 마지막으로 각 개체의 위치를 파악하고 출력을 표시하기 위해 산술 계산을 수행합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예 def countSort(arr): # The output charact
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 길이가 n인 막대와 n보다 작은 크기의 모든 조각의 가격을 포함하는 가격 배열이 주어집니다. 막대를 자르고 조각을 팔아서 얻을 수 있는 최대 가치를 결정해야 합니다. 우리는 문제를 해결하기 위해 동적 프로그래밍 접근 방식을 사용할 것입니다. 이제 아래 구현에서 솔루션을 살펴보겠습니다- 예시 # A Dynamic Programming solution for Rod cutting problem INT_MIN = -32767 # cut fu
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 순환 정렬 개념을 사용하여 정렬해야 합니다. 인플레이스(in-place) 알고리즘이며 순환의 형성에 의해 스와핑이 발생합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 def cycleSort(array): writes = 0 # cycles to be rotated for cycleStart in range(0, len(array)
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 방향 그래프가 주어졌을 때 그래프에 주기가 포함되어 있는지 확인해야 합니다. 주어진 그래프에 하나 이상의 주기가 포함되어 있으면 출력이 true여야 하고, 그렇지 않으면 false입니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # collections module from collections import defaultdict # class for creation of graphs class Graph(): &
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 40층 건물의 어느 층에서 계란을 떨어뜨리는 것이 안전한지, 그리고 그 중 어느 층에서 계란의 도움으로 착륙 시 계란이 손상을 입는지 알고 싶다고 가정합니다. 스토리를 확인하려면 최소한의 트레일을 표시해야 합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예 # dynamic programming INT_MAX = 32767 # to get minimum trials def eggDrop(n, k): #
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 두 개의 숫자가 주어지면 이 두 숫자의 gcd를 계산하여 표시해야 합니다. 두 숫자의 GCD 최대 공약수는 두 숫자를 모두 나눌 수 있는 가장 큰 숫자입니다. 여기서 우리는 gcd를 계산하기 위해 유클리드 접근 방식을 따릅니다. 즉, 숫자를 반복적으로 나누고 나머지가 0이 되면 중지합니다. 여기서 우리는 재귀에서 얻은 이전 값을 기반으로 알고리즘을 확장합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # extended
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 두 개의 배열이 주어졌으므로 두 개의 정렬된 배열에서 가장 가까운 쌍을 찾아야 합니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # sys module import sys # pair def print_(ar1, ar2, m, n, x): # difference diff=sys.maxsize # index l = 0 &
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 gnome 정렬을 사용하여 정렬해야 합니다. 알고리즘 1. Firstly we traverse the array from left to right. 2. Now,if the current element is larger or equal to the previous element then we traverse one step ahead 3. otherwise,if the current element is smaller th
이 기사에서 우리는 아래 주어진 문제 설명에 대한 해결책에 대해 배울 것입니다. 문제 설명 − 배열이 주어졌으므로 힙 정렬 개념을 사용하여 정렬해야 합니다. 여기서 우리는 끝에 최대 요소를 배치합니다. 이것은 배열이 정렬될 때까지 반복됩니다. 이제 아래 구현에서 솔루션을 살펴보겠습니다- 예 # heapify def heapify(arr, n, i): largest = i # largest value l = 2 * i + 1 # left r = 2 * i +
이 기사에서 우리는 아래 주어진 문제 설명에 대한 해결책에 대해 배울 것입니다. 문제 설명 − 배열이 주어졌으므로 반복에 의한 병합 정렬 개념을 사용하여 정렬해야 합니다. 여기서 우리는 끝에 최대 요소를 배치합니다. 이것은 배열이 정렬될 때까지 반복됩니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예 # iterative way def mergeSort(a): current_size = 1 # traversing subarrays while cur
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 반복 방식을 사용하여 빠른 정렬 개념을 사용하여 정렬해야 합니다. 여기서는 먼저 배열을 분할하고 별도의 파티션을 정렬하여 정렬된 배열을 얻습니다. 이제 아래 구현에서 솔루션을 살펴보겠습니다- 예 # iterative way def partition(arr,l,h): i = ( l - 1 ) x = arr[h] for j in range(l , h)
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 삼각형의 형태로 정렬해야 하는 N 개의 동전이 주어집니다. 즉, 첫 번째 행에는 1개의 동전이 있고 두 번째 행에는 2개의 동전이 있는 식으로 달성할 수 있는 최대 높이를 표시해야 합니다. 도움으로 N 코인. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # squareroot def squareRoot(n): # initial approximation x = n &nbs
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 배열이 주어졌으므로 병합 정렬 개념을 사용하여 정렬해야 합니다. 여기서 우리는 끝에 최대 요소를 배치합니다. 이것은 배열이 정렬될 때까지 반복됩니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 #merge function def merge(arr, l, m, r): n1 = m - l + 1 n2 = r- m # create arrays &nb
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 비용 행렬과 위치(m, n)가 주어지면 (0, 0)에서 (m, n)에 도달하는 최소 비용 경로의 비용을 찾아야 합니다. 각 셀은 한 셀에서 다른 셀로 이동하는 데 드는 비용을 나타냅니다. 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # dynamic approach R = 3 C = 3 def minCost(cost, m, n): # initialization tc = [[0 for
이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다. 문제 설명 − 두 장소 A와 B 사이에 13개의 중간 역이 있다고 가정합니다. 두 개의 중간 역에서 기차가 연속 역이 없도록 정차할 수 있는 방법의 수를 찾아야 합니까? 이제 아래 구현에서 솔루션을 관찰해 보겠습니다 - 예시 # stop station def stopping_station( p, n): num = 1 dem = 1 s = p # selectin