Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++

  1. C++로 풀어보는 최대 부분 배열 크기 문제: 모든 부분 배열의 합이 k 이하가 되는 조건

    이 문제에서는 n개의 양의 정수로 이루어진 배열 arr[]와 하나의 정수 k가 주어집니다. 우리의 목표는 해당 크기의 모든 부분 배열(subarray)의 합이 k보다 작거나 같은 가장 큰 부분 배열의 크기를 구하는 것입니다.문제 설명배열의 원소들로 만들 수 있는 특정 크기의 모든 부분 배열에 대해, 그 합이 k 이하가 되도록 하는 부분 배열의 최대 길이를 찾아야 합니다.예제로 이해하기입력arr[n] = {4, 1, 3, 2}, k = 9출력3설명크기가 3인 모든 부분 배열과 그 합은 다음과 같습니다.{4, 1, 3} = 8{1, 3

  2. C++로 특정 요소를 제외한 최대 부분 배열 합 구하는 방법

    이 문제에서는 크기가 n인 배열 arr1[]과 크기가 m인 배열 arr2[] 두 개가 주어집니다. 우리의 목표는 특정 요소들을 제외한 상태에서 최대 부분 배열 합(maximum subarray sum)을 구하는 프로그램을 작성하는 것입니다.문제 설명 — 배열 arr1[]의 요소들 중 arr2[]에 존재하지 않는 값들만 사용하여 만들 수 있는 부분 배열(subarray) 중 합이 가장 큰 값을 찾아야 합니다.예제로 이해하기입력arr1[] = {4, 5, 7, 2, 9}, arr2[] = {1, 9, 2, 7}출력9설명arr2[]에 포

  3. C++로 반복 연결한 배열에서 최대 부분 배열 합 구하기

    이 문제에서는 크기가 n인 배열 arr[]와 정수 k가 주어집니다. 우리의 과제는 arr를 k번 반복 연결하여 만든 배열에서 최대 부분 배열(subarray) 합을 찾는 프로그램을 작성하는 것입니다. 문제 설명 배열 arr를 k번 반복하여 새로운 배열을 생성한 뒤, 그 배열에서 얻을 수 있는 부분 배열 합의 최댓값을 구하는 것이 목표입니다. 예시 예제를 통해 문제를 이해해 보겠습니다. 입력 arr[] = {-9, -5, 14, 6} k = 2 출력 26 설명 반복 후 새 배열 : {-9, -5, 14, 6, -9, -5,

  4. C++로 해결하는 최대 부분 수열 합 문제 – 세 요소 연속 선택 금지 조건

    문제 개요이 문제에서는 n개의 양의 정수로 이루어진 배열 arr[]가 주어집니다. 우리가 작성해야 할 프로그램은 세 개의 요소가 연속적으로 선택되지 않도록 하는 조건을 지키면서 얻을 수 있는 최대 부분 수열 합을 찾는 것입니다.여기서 연속적인(consecutive) 요소란 배열에서 인덱스 순서를 그대로 따르는 요소들을 의미합니다. 예를 들어 다음과 같은 형태입니다.arr[0], arr[1], arr[2], …즉, 부분 수열을 구성할 때 arr[i], arr[i+1], arr[i+2]처럼 세 요소를 모두 골라 담는 일만 없으면 되고,

  5. C++로 구현하는 최대 합 교대 부분 수열 – 동적 계획법 완벽 가이드

    문제 소개 이 문제에서는 n개의 정수로 이루어진 배열 arr[]가 주어지며, 배열의 첫 번째 원소에서 시작하는 최대 합 교대 부분 수열(Maximum Sum Alternating Subsequence)을 찾는 프로그램을 작성해야 합니다. 교대 부분 수열(alternating subsequence)이란 원소들이 감소와 증가를 번갈아 가며 나타나는 부분 수열을 말합니다. 즉, 먼저 감소한 뒤 다시 증가하고, 다시 감소하는 형태를 이룹니다. 단, 증가부터 시작하는 역방향 교대 부분 수열은 최대 합을 구할 때 유효하지 않습니다. 예제를 통

  6. C++로 두 배열에서 순서대로 원소를 선택해 최대 합 구하기

    이 문제에서는 두 개의 배열 arr1[]과 arr2[], 그리고 두 개의 정수 N과 M이 주어집니다. N은 arr1에서 가져올 수 있는 원소의 최대 개수를, M은 arr2에서 가져올 수 있는 원소의 최대 개수를 의미합니다.배열의 인덱스를 처음부터 순서대로 탐색하면서 각 인덱스 i마다 arr1[i]와 arr2[i] 중 하나를 선택해야 하며, arr1에서는 최대 N개, arr2에서는 최대 M개까지만 선택할 수 있습니다. 이렇게 선택한 원소들의 합이 최대가 되도록 만드는 것이 목표입니다.즉, 우리가 작성해야 할 것은 순서대로 두 배열에서

  7. C++ 동적 계획법(DP)으로 최대 합 증가 부분 수열 구하기

    이 문제에서는 크기가 n인 배열 arr[]가 주어지며, 우리의 목표는 C++에서 동적 계획법(DP)을 활용하여 최대 합 증가 부분 수열(Maximum Sum Increasing Subsequence)을 찾는 프로그램을 작성하는 것입니다.문제 설명최대 합 증가 부분 수열이란, 배열에서 이전 원소보다 다음 원소가 항상 크다는 조건(증가 조건)을 만족하는 부분 수열 중에서 원소들의 합이 가장 큰 수열을 의미합니다.예제로 이해하기입력arr[] = {4, 2, 3, 6, 5, 9}출력20설명합이 최대인 증가 부분 수열: {2, 3, 6, 9

  8. C++ 이진 인덱스 트리(BIT)를 활용한 최대 합 증가 부분 수열 구하기

    이 문제에서는 n개의 정수로 이루어진 배열 arr[]이 주어지며, C++에서 이진 인덱스 트리(Binary Indexed Tree, BIT)를 사용하여 최대 합 증가 부분 수열을 찾는 프로그램을 작성하는 것이 목표입니다.문제 설명배열의 원소들을 이용하여 합이 가장 큰 증가 부분 수열(Increasing Subsequence)을 찾아야 합니다.증가 부분 수열: 현재 원소의 값이 바로 앞 위치의 원소보다 항상 큰 부분 수열을 의미합니다.이진 인덱스 트리(BIT): 트리 형태의 자료구조로, 원소를 효율적으로 추가·갱신하고 구간별 값을 빠

  9. C++로 n개 배열에서 증가하는 순서 요소의 최대 합 구하기

    문제 개요이 문제에서는 크기가 n×m인 2차원 행렬이 주어집니다. 우리가 해야 할 일은 n개의 배열(행)에서 증가하는 순서를 이루는 요소들을 선택했을 때 얻을 수 있는 최대 합을 구하는 프로그램을 작성하는 것입니다.문제 설명각 행에서 요소를 하나씩 선택하여 합을 만들되, i번째 행에서 선택한 요소는 반드시 (i+1)번째 행에서 선택한 요소보다 작아야 합니다. 이러한 조건을 만족하는 조합이 존재하지 않는다면, 가능한 결과가 없다는 의미로 -1을 반환해야 합니다.예시로 이해하기입력:mat[][] = { {4, 5, 1, 3, 6

  10. C++ 동적 계획법으로 이진 트리에서 인접하지 않은 노드의 최대 합 구하기

    이 문제에서는 각 노드가 값을 가지는 이진 트리(Binary Tree)가 주어집니다. 우리의 과제는 동적 계획법(Dynamic Programming)을 활용하여 서로 인접(직접 연결)하지 않는 두 노드를 선택하지 않으면서 얻을 수 있는 노드 값의 최대 합을 구하는 프로그램을 작성하는 것입니다.문제 설명주어진 이진 트리에서 노드들을 선택하여 합을 최대화해야 하며, 단 선택된 노드들끼리는 부모-자식 관계처럼 직접 연결되어 있어서는 안 됩니다.예제로 이해하기입력출력24설명선택한 노드: 8 + 5 + 9 + 2 = 24해결 접근 방식이 문

  11. C++로 특정 차이를 가진 쌍의 최대 합 구하기

    이 문제에서는 n개의 정수로 이루어진 배열 arr[]과 숫자 d가 주어집니다. 우리의 과제는 특정 차이 조건을 만족하는 쌍(pair)들 중 최대 합을 찾는 프로그램을 C++로 작성하는 것입니다.문제 설명배열에서 두 원소의 차이가 d보다 작은 쌍들을 찾아야 하며, 그러한 쌍들의 합이 최대가 되도록 선택해야 합니다.예제로 문제 이해하기입력arr[] = {5, 9, 11, 7, 2, 12, 3}, d = 5출력47설명최대 합에 기여하는 쌍: (3, 5), (7, 9), (11, 12)합 = 3 + 5 + 7 + 9 + 11 + 12 =

  12. C++로 음수를 포함한 배열에서 쌍별 곱의 최대 합 구하기

    문제 개요 이 문제에서는 n개의 정수로 이루어진 배열 arr[]가 주어지며, 배열에는 음수도 포함될 수 있습니다. 목표는 배열의 원소들을 짝지어 만들 수 있는 쌍별 곱(pairwise product)의 합 중 최댓값을 구하는 프로그램을 작성하는 것입니다. 문제 설명 배열의 원소들을 서로 쌍(pair)으로 묶고, 각 쌍에 속한 두 원소의 곱을 모두 더했을 때 그 합이 최대가 되도록 쌍을 구성해야 합니다. 예제로 이해하기 입력: arr[] = {-5, 2, 3, 7, -1, 1, -3, 12} 출력: 104 설명: 선택된 쌍: (-

  13. C++로 배열에서 최솟값과 두 번째 최솟값의 최대 합 구하기

    이 문제에서는 배열 arr[]가 주어지며, 우리의 목표는 배열에서 가장 작은 값과 두 번째로 작은 값의 합이 가장 커지는 경우를 찾아 그 최대 합을 구하는 프로그램을 작성하는 것입니다.문제 설명배열의 모든 부분 배열(subarray)에 대해 각 부분 배열 내에서 가장 작은 원소와 두 번째로 작은 원소의 합을 계산하고, 이러한 합들 중 최대값을 반환해야 합니다.예시예제를 통해 문제를 자세히 이해해 보겠습니다.입력arr[] = {3, 5, 4, 2, 9, 1, 6}출력11설명가능한 모든 부분 배열 중, {2, 9}에서 최솟값들의 합이

  14. C++로 두 배열의 곱셈 합 최댓값 구하기

    이 문제에서는 크기가 n인 두 배열 arr1[]과 arr2[]가 주어지며, 우리의 목표는 두 배열의 곱(product)의 합 중 최댓값을 구하는 프로그램을 작성하는 것입니다.문제 설명두 배열의 곱의 최대 합(Maximum Sum of Products)을 구해야 합니다. 즉, arr1의 한 원소와 arr2의 한 원소를 짝지어 곱한 뒤, 이러한 곱들의 합이 가장 커지도록 배열의 원소들을 매칭해야 합니다.예제로 문제 이해하기입력arr1[] = {3, 5, 6}arr2[] = {1, 4, 2}출력37설명곱의 최대 합: 6*4 + 5*2 +

  15. C++로 구현하는 행렬 왕복 최대 합 경로 찾기 (동적 계획법)

    문제 개요n×m 크기의 행렬 mat[][]가 주어졌을 때, 왼쪽 위 칸(mat[0][0])에서 출발해 오른쪽 아래 칸(mat[n-1][m-1])까지 이동한 뒤, 다시 출발점으로 되돌아오는 왕복 경로 중 합이 최대가 되는 경로를 찾는 것이 이 문제의 목표입니다.허용되는 이동 방식가는 길 (mat[0][0] → mat[n-1][m-1]): 오른쪽(mat[i][j] → mat[i][j+1]) 또는 아래(mat[i][j] → mat[i+1][j])오는 길 (mat[n-1][m-1] → mat[0][0]): 왼쪽(mat[i][j] → mat

  16. C++로 구현하는 부분 수열의 최대 합: 두 요소가 K 거리 미만에 위치하지 않도록 선택하기

    이 문제에서는 크기가 n인 배열 arr[]와 정수 k가 주어집니다. 우리의 목표는 배열 내에서 두 요소가 서로 K 미만의 거리에 위치하지 않도록 선택한 부분 수열(subsequence)의 최대 합을 구하는 프로그램을 작성하는 것입니다.문제 설명즉, 선택하는 각 요소들이 서로 k 이상의 거리를 유지하도록 하면서, 그 합이 최대가 되는 부분 수열을 찾아야 합니다.예제로 이해하기입력arr[] = {6, 2, 5, 1, 9, 11, 4}, k = 2출력16설명서로 k(=2) 이상 떨어져 있는 요소들로 만들 수 있는 모든 부분 수열: {6,

  17. C++ 프로그램으로 시작 값과 끝 값이 같은 최대 합 부분 배열 찾기

    양의 정수로만 이루어진 크기 n의 배열 arr[]가 주어졌을 때, 시작 인덱스와 끝 인덱스의 값이 서로 같은 부분 배열(subarray) 중에서 원소의 합이 최대가 되는 경우를 찾는 것이 이 문제의 목표입니다. 문제 설명 찾고자 하는 부분 배열은 시작 인덱스 i와 끝 인덱스 j에서 arr[i] = arr[j]를 만족해야 합니다. 즉, 부분 배열의 첫 번째 원소와 마지막 원소가 동일해야 하며, 이 조건을 만족하는 모든 부분 배열 중 합이 가장 큰 것을 구하면 됩니다. 입력 예제 arr[] = {2, 1, 3, 5, 6, 2, 4, 3

  18. C++ 동적 계획법으로 최소 k 간격 요소를 포함하는 최대 합 부분 수열 구하기

    문제 소개 이 문제에서는 크기가 n인 배열 arr[]과 숫자 k가 주어집니다. 목표는 배열에서 서로 최소 k만큼 떨어진(인덱스 간격이 k 이상인) 요소들로 구성된 부분 수열 중에서 합이 최대가 되는 값을 찾는 프로그램을 작성하는 것입니다. 문제 설명 주어진 배열에서 선택한 요소들의 인덱스가 서로 k 이상의 거리를 유지하도록 부분 수열을 구성하고, 가능한 모든 경우 중 합이 가장 큰 값을 구해야 합니다. 예제로 이해하기 입력 arr[] = {2, 3, 7, 9, 2, 8, 3} 출력 15 설명 조건을 만족하는 모든 부분 수열은 다음과

  19. C++로 구현하는 '인접하지 않은 요소' 최대 부분 수열 합 문제 - 동적 프로그래밍 접근법

    이번 문제에서는 양수로만 구성된 크기 n의 배열 arr[]가 주어집니다. 목표는 배열에서 인접한 두 요소를 동시에 선택하지 않으면서 얻을 수 있는 최대 부분 수열 합을 구하는 프로그램을 작성하는 것입니다. 문제 설명 주어진 배열에서 여러 요소를 골라 합을 만들되, 특정 요소를 선택했다면 그 바로 옆에 있는(인접한) 요소는 선택할 수 없습니다. 이 제약 조건을 지키면서 만들 수 있는 합 중 최댓값을 찾는 것이 핵심입니다. 예시로 이해하기 입력 arr[] = {5, 2, 1, 9, 6} 출력 14 설명 조건을 만족하는 선택 예시: {

  20. C++로 풀어보는 최대 무게 차이(Maximum Weight Difference) 문제

    이 문제에서는 배열 arr[]과 숫자 M이 주어지며, C++로 두 그룹 간의 최대 무게 차이(Maximum Weight Difference)를 계산하는 프로그램을 작성하는 것이 목표입니다.문제 설명배열에서 M개의 원소를 선택했을 때, 선택한 원소들의 합과 나머지 원소들의 합 사이의 절댓값 차이가 최대가 되는 경우를 찾아 그 값을 반환해야 합니다.입력 예시arr[] = {3, 1, 6, 9, 4}, M = 3출력15설명배열에서 4, 6, 9를 선택하면 이 세 원소의 합은 19이고, 나머지 원소(3, 1)의 합은 4입니다. 따라서 절댓

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:234/300  20-컴퓨터/Page Goto:1 228 229 230 231 232 233 234 235 236 237 238 239 240