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

C++

  1. C++로 1부터 N까지의 서로소(Co-prime) 쌍 개수를 구하는 쿼리 문제 완벽 가이드

    이 문제에서는 각각 숫자 N을 포함하는 Q개의 쿼리가 주어집니다. 우리의 과제는 C++를 사용하여 1부터 N까지의 순서 없는(unordered) 서로소 쌍의 개수를 세는 프로그램을 작성하는 것입니다.서로소(Co-prime)는 흔히 상호 소수(relatively prime) 또는 상호 짝수(mutually prime)라고도 불리며, 두 수 사이에 공약수가 오직 1뿐인 수의 쌍을 의미합니다.문제 이해를 위한 예시입력: Q = 3, queries = [5, 7, 9]출력: 10, 18, 28설명N = 5일 때 서로소 쌍은 다음과 같습니다

  2. 이진 트리의 두 노드 사이의 거리를 구하는 쿼리 – C++ O(log n) 풀이법

    이 문제에서는 하나의 이진 트리(binary tree)와 Q개의 쿼리가 주어집니다. 우리의 과제는 이진 트리의 두 노드 사이의 거리를 찾는 쿼리를 효율적으로 처리하는 프로그램을 작성하는 것이며, 이 글에서는 C++로 O(log n) 시간 복잡도를 달성하는 방법을 소개합니다. 문제 설명 각 쿼리마다 이진 트리의 두 노드가 주어지며, 두 노드 사이의 거리, 즉 한 노드에서 다른 노드로 이동하기 위해 거쳐야 하는 간선(edge)의 개수를 구해야 합니다. 예시를 통해 문제를 살펴보겠습니다. 입력: 이진 트리 쿼리 수 = 3 Q1 -&g

  3. C++로 배열 업데이트까지 처리하는 범위 내 최대 곱 쌍 찾기 쿼리 구현하기

    이 문제에서는 배열 arr[]과 Q개의 쿼리가 주어집니다. 각 쿼리는 다음 두 가지 유형 중 하나입니다.유형 1: 주어진 범위 [Start ~ End] 내에서 최대 곱(maximum product pair)을 찾습니다.유형 2: i번째 인덱스의 요소를 지정된 값으로 업데이트합니다.즉, 우리의 목표는 요소 업데이트가 중간에 발생하더라도 특정 범위 내에서 최대 곱 쌍을 정확하게 찾아내는 프로그램을 C++로 작성하는 것입니다.문제 이해를 위한 예시입력:arr = {4, 2, 6, 9, 1}Q = 3Q1 = [1, 1, 4]Q2 = [2,

  4. C++로 주어진 문자열의 부분 문자열에서 반복되지 않는 마지막 문자를 찾는 쿼리 구현하기

    이 문제에서는 문자열 str과 각각 두 개의 정수로 구성된 Q개의 쿼리가 주어집니다. 우리의 과제는 C++에서 주어진 문자열의 부분 문자열 내에서 반복되지 않는 마지막 문자를 찾는 쿼리를 처리하는 프로그램을 작성하는 것입니다.문제 설명각 쿼리에는 두 개의 정수 L과 R이 주어집니다. 쿼리를 해결하기 위해 인덱스 L부터 R까지의 부분 문자열을 추출한 뒤, 해당 부분 문자열 안에서 단 한 번만 등장하는(즉, 반복되지 않는) 마지막 문자를 찾아야 합니다.예시를 통해 문제를 이해해 보겠습니다.입력: str = Tutorialspoint,

  5. C++로 숫자가 정확히 4개의 서로 다른 약수를 갖는지 확인하는 쿼리 문제 풀이

    이 문제에서는 Q개의 쿼리가 주어지고, 각 쿼리마다 하나의 숫자 N이 포함됩니다. 우리가 해결해야 할 과제는 C++로 프로그램을 작성하여, 각 쿼리의 숫자가 정확히 4개의 서로 다른 약수(distinct factors)를 가지는지 판별하는 것입니다. 문제 설명 각 쿼리에 대해 숫자 N의 서로 다른 약수가 정확히 4개인지 확인합니다. 조건을 만족하면 YES를, 만족하지 않으면 NO를 출력합니다. 예시를 통해 문제를 살펴보겠습니다. 입력: Q = 3, 쿼리 = {4, 6, 15} 출력: NO  YES &nbs

  6. C++로 배열의 모든 부분집합 곱의 합 구하기 – 효율적인 알고리즘과 예제 코드

    문제 소개 이 문제에서는 N개의 숫자로 이루어진 배열 arr[]가 주어지며, 만들 수 있는 모든 부분집합에 대해 각 부분집합에 속한 원소들의 곱을 구한 뒤, 그 값들을 모두 더한 최종 합계를 계산하는 프로그램을 작성하는 것이 목표입니다. 문제 이해를 위한 예시 입력: arr[] = {4, 5, 6} 출력: 209 설명 − arr[]의 모든 부분집합: {4}, {5}, {6}, {4, 5}, {5, 6}, {4, 6}, {4, 5, 6} 곱의 합 = (4) + (5) + (6) + (4*5) + (5*6) + (4*6) + (4*5

  7. C++로 0.7, 0.77, 0.777… 수열의 n항까지 합 구하기: 공식 유도와 구현

    문제 개요이 문제에서는 수열 0.7, 0.77, 0.777…의 첫 n항이 주어지며, n항까지의 합을 구하는 프로그램을 작성하는 것이 목표입니다. 단순히 반복문으로 항을 더하는 방법도 있지만, 수학적 공식을 유도하면 반복문 없이 한 번의 계산으로 답을 얻을 수 있어 훨씬 효율적입니다.예시로 문제 이해하기입력: 4출력: 3.0247설명: 0.7 + 0.77 + 0.777 + 0.7777 = 3.0247접근 방법: 수열의 합 일반 공식 유도각 항은 7 × (0.1 + 0.01 + 0.001 + …) 형태로 분해할

  8. C++로 구하는 급수의 합: 1/1 + (1+2)/(1×2) + (1+2+3)/(1×2×3) + … 최대 n항까지

    정수 n이 주어지며, 이 값은 급수 1/1 + ((1+2)/(1×2)) + ((1+2+3)/(1×2×3)) + … 의 항 개수를 나타냅니다.이 글에서는 n항까지의 급수 합을 계산하는 C++ 프로그램을 작성하는 방법을 알아보겠습니다.예시로 문제 이해하기입력n = 3출력3.5설명 − (1/1) + (1+2)/(1×2) + (1+2+3)/(1×2×3) = 1 + 1.5 + 1 = 3.5이 문제의 가장 간단한 풀이 방법은 1부터 n까지 반복문을 수행하면서, 각 단계마다 i까지의 합(sum)을 i까지의 곱(prod)으로 나눈 값을 결과에 계

  9. C++로 구하는 수열 1 + (1+2) + (1+2+3) + ... + (1+2+...+n)의 합

    문제 개요이 문제에서는 하나의 자연수 n이 주어지며, 우리의 목표는 다음과 같은 수열의 합을 구하는 프로그램을 작성하는 것입니다.1 + (1+2) + (1+2+3) + (1+2+3+4) + … + (1+2+3+4+...+n)예제로 이해하기입력n = 4출력20설명 − (1) + (1+2) + (1+2+3) + (1+2+3+4) = 20방법 1: 반복문을 이용한 단순 해결법가장 직관적인 방법은 두 개의 중첩 반복문(nested loop)을 사용해 각 항을 계산하면서 누적하는 것입니다.알고리즘sum = 0으로 초기화 1단계: i를 1부터

  10. C++로 구하는 수열의 합: 1 + (1+3) + (1+3+5) + ... + (1+3+...+(2n-1))

    이 문제에서는 정수 n이 주어지며, 우리의 목표는 다음과 같은 수열의 합을 구하는 프로그램을 작성하는 것입니다.1 + (1+3) + (1+3+5) + (1+3+5+7) + ... + (1+3+5+7+...+(2n-1))이 수열을 잘 살펴보면, i번째 항은 첫 번째 홀수부터 i번째 홀수까지의 합, 즉 처음 i개의 홀수의 합이라는 규칙을 발견할 수 있습니다.예제로 문제 이해하기입력n = 3출력14설명 − (1) + (1+3) + (1+3+5) = 14방법 1: 중첩 루프를 이용한 단순 해결법가장 직관적인 방법은 중첩 루프(nested

  11. C++로 구현하는 급수 1 + x/1 + x²/2 + x³/3 + ... + xⁿ/n의 합 계산 방법

    이 문제에서는 수학적 급수를 나타내는 두 개의 값 x와 n이 주어집니다. 우리의 과제는 1 + x/1 + x²/2 + x³/3 + ... + xⁿ/n 형태의 급수 합을 구하는 프로그램을 작성하는 것입니다.예시를 통한 문제 이해입력x = 2, n = 4출력11.666설명 −sum = 1 + 2/1 + (2²)/2 + (2³)/3 + (2⁴)/4 = 1 + 2 + 4/2 + 8/3 + 16/4 = 1 + 2 + 2 + 8/3 + 4 = 9 + 8/3 = 11.666...해결 접근 방식가장 간단한 해결 방법은

  12. C++로 삼각수 수열(1, 3, 6, 10…)의 합 구하기

    문제 소개숫자 n이 주어졌을 때, 삼각수(Triangular Number) 수열 1, 3, 6, 10 … 의 처음 n개 항의 합을 계산하는 프로그램을 작성하는 것이 이번 문제의 목표입니다.합을 구하기 전에, 삼각수가 정확히 무엇인지 먼저 짚고 넘어가겠습니다.삼각수(Triangular Number)란?삼각수는 이름 그대로 삼각형 모양으로 배열할 수 있는 수를 말합니다. 첫 번째 행에는 점 1개, 두 번째 행에는 점 2개, 세 번째 행에는 점 3개를 놓는 식으로 아래로 내려갈수록 점을 하나씩 늘려가며 삼각형을 만들 때, 각 단계까지 쌓

  13. C++로 급수의 합 구하기: 1/(1×2) + 1/(2×3) + 1/(3×4) + … 반복문과 공식 풀이

    이 문제에서는 급수 1/(1×2) + 1/(2×3) + … + 1/(n×(n+1))의 제 n항을 나타내는 숫자 n이 주어집니다. 우리의 과제는 이 급수의 합을 구하는 프로그램을 작성하는 것입니다. 예시를 통한 문제 이해 입력 n = 3 출력 0.75 설명 — 합 = 1/(1×2) + 1/(2×3) + 1/(3×4) = 1/2 + 1/6 + 1/12 = (6+2+1)/12 = 9/12 = 3/4 = 0.75 가장 간단한 풀이 방법은 반복문을 사용해 급수의 각 항 값을 하나씩 계산한 뒤, 모두 더해 합을 구하는 것입니다. 방법 1: 반

  14. C++ 재귀 함수로 수열 1^1 + 2^2 + 3^3 + … + n^n의 합 구하기

    이 문제에서는 숫자 n이 주어지며, 이 값은 수열 1^1 + 2^2 + 3^3 + … + n^n의 마지막 항을 결정합니다. 목표는 이 수열의 전체 합을 구하는 프로그램을 작성하는 것이며, 여기서는 반복문 대신 재귀(recursion)를 활용해 문제를 해결해 보겠습니다. 예제로 문제 이해하기 입력 n = 4 출력 288 설명 − sum = (1^1) + (2^2) + (3^3) + (4^4) = 1 + 4 + 27 + 256 = 288. 재귀를 활용한 접근 방법 재귀 방식에서는 두 개의 함수를 사용합니다.

  15. C++로 계산하는 수열의 합: 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+2n)

    이 문제에서는 수열 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2+4+6+8+...+2n)이 주어지고, 숫자 n은 이 수열의 n번째 항을 정의합니다. 우리의 목표는 이 수열의 전체 합을 구하는 프로그램을 작성하는 것입니다.문제 이해를 위한 예시입력n = 3출력20설명 − 합 = (2) + (2+4) + (2+4+6) = 2 + 6 + 12 = 20방법 1: 중첩 반복문을 사용한 단순 해법가장 직관적인 방법은 중첩 반복문(nested loop)을 사용하는 것입니다. 내부 반복문이 수열의 i번째 항(짝수들

  16. C++로 N×N 체스판에 배치할 수 있는 최대 비숍 개수 구하기

    체스판의 크기를 나타내는 정수 N이 입력으로 주어집니다. 이 문제의 목표는 임의의 N 값에 대해 N×N 체스판 위에 서로 공격할 수 없도록 비숍을 최대 몇 개까지 배치할 수 있는지 구하는 것입니다. 비숍은 대각선 방향으로 이동하며 공격하기 때문에, 두 비숍이 같은 대각선 상에 위치하면 안 됩니다.예제입력 − N = 2출력 − 2×2 체스판에 배치 가능한 최대 비숍 수 − 2 (위 그림 참조)설명 − 위 그림에서 보듯이 두 비숍이 서로 공격하지 않는 유일한 배치가 표시된 위치이며, 2×2 체스판에서는 최대 2개까지만 배치할 수 있습니

  17. C++로 순환 배열에서 최대 연속 1(또는 0)의 개수 구하기

    순환 배열(Circular Array)은 첫 번째 요소가 마지막 요소 바로 뒤에 이어지는 것으로 간주하는 배열입니다. 주로 큐(Queue)를 구현할 때 활용되며, 이번 글에서는 이러한 순환 배열 안에서 연속된 1 또는 0의 최대 개수를 구하는 방법을 알아보겠습니다.문제 이해하기구체적인 예시를 통해 문제를 살펴보겠습니다.입력 − Arr[] = { 1,1,0,1,0,1,0,1,1,1 }출력 − 최대 연속 1의 개수는 5, 최대 연속 0의 개수는 1설명 − 배열의 인덱스 7부터 9까지 그리고 순환하여 인덱스 0과 1까지 이어지므로, 1이

  18. C++로 문자열에서 가장 긴 연속 반복 문자 찾기

    알파벳으로 이루어진 문자열이 하나 주어집니다. 이때 문자열 안에서 가장 길게 연속해서 반복되는 문자를 찾아야 합니다. 예시를 통해 자세히 살펴보겠습니다.입력 − String[] = "abbbabbbbcdd"출력 − b설명 − 위 문자열에서 가장 긴 연속 구간은 문자 b입니다. 연속된 b의 개수는 4개입니다.입력 − String[] = "aabbcdeeeeed"출력 − e설명 − 위 문자열에서 가장 긴 연속 구간은 문자 e입니다. 연속된 e의 개수는 5개입니다.프로그램에 적용된 접근 방식문자 배열

  19. C++로 배열에서 연속된 소수의 최대 개수 구하기

    문제 개요 크기가 N인 정수 배열이 무작위 순서로 주어집니다. 이 배열 안에서 연속된 소수로 이루어진 가장 긴 구간의 길이를 찾는 것이 이번 문제의 목표입니다. 소수(Prime Number)란 약수가 정확히 두 개, 즉 1과 자기 자신뿐인 수를 말합니다. 2, 3, 5, 7, 11, 13 등은 소수에 해당하고, 4, 6, 8, 9, 10처럼 약수가 세 개 이상인 수는 모두 소수가 아닙니다. 참고로 1은 약수가 하나뿐이므로 소수에 포함되지 않습니다. 입력 · 출력 예시 입력 − Arr[] = { 1, 3, 5, 2, 6, 7, 13,

  20. C++에서 합이 짝수인 최장 부분 배열의 길이 구하기

    정수로 이루어진 배열 Arr[]가 주어졌을 때, 요소들의 합이 짝수가 되는 가장 긴 부분 배열(subarray)의 길이를 구하는 것이 목표입니다. 즉, 부분 배열 안 요소들의 합이 짝수이면서 길이가 최대가 되는 경우를 찾는 문제입니다. 예제 입력 및 출력 입력 − Arr[] = { 2, 3, 5, 2, 6, 7 } 출력 − 부분 배열의 최대 길이: 4 설명 − 가장 긴 부분 배열은 { 5, 2, 6, 7 }이며, 합은 20으로 짝수입니다. 입력 − Arr[] = { 5, 7, 7, 3, 4 } 출력 − 부분 배열의 최대 길이:

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:208/300  20-컴퓨터/Page Goto:1 202 203 204 205 206 207 208 209 210 211 212 213 214