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

C++

  1. C++로 배열의 모든 요소로 나누어 떨어지는 범위 내 숫자 개수 구하기

    두 개의 정수 START와 END가 주어져 하나의 숫자 범위를 정의하고, 양수로만 이루어진 배열 Arr[]도 함께 제공됩니다. 목표는 [START, END] 범위 안에 있으면서 배열의 모든 요소로 나누어 떨어지는 숫자를 모두 찾아 그 개수를 구하는 것입니다.이 문제를 해결하는 대표적인 두 가지 방법을 살펴보겠습니다.예시로 이해하기입력START=1 END=20 Arr[]= { 2, 4, 8 }출력배열의 모든 요소로 나누어 떨어지는 숫자의 개수: 2설명범위 내에서 배열의 모든 요소(2, 4, 8)로 나누어 떨어지는 숫자는 8과 16입니

  2. C++로 1부터 N까지 X로는 나누어지지만 Y로는 나누어지지 않는 수 세기

    문제 개요숫자 N이 주어졌을 때, 1부터 N까지의 범위에서 X로는 나누어지지만 Y로는 나누어지지 않는 수의 개수를 구하는 것이 목표입니다.예제를 통해 자세히 살펴보겠습니다.입력N=20 X=5 Y=20출력Numbers from 1 to N divisible by X not Y: 2설명5와 15만 5로 나누어지면서 20으로는 나누어지지 않습니다.입력N=20 X=4 Y=7출력Numbers from 1 to N divisible by X not Y: 5설명4, 8, 12, 16, 20은 모두 4로 나누어지며 7로는 나누어지지 않습니다.접근

  3. C++로 특정 범위에서 0이 아닌 모든 자릿수로 나누어 떨어지는 숫자 개수 구하기

    이 문제에서는 두 개의 숫자 START와 END가 주어져 하나의 숫자 범위를 정의합니다. 목표는 [START, END] 범위 안에 있는 숫자 중, 자기 자신의 0이 아닌 모든 자릿수로 나누어 떨어지는 숫자의 개수를 구하는 것입니다.해결 방법은 START부터 END까지 숫자를 하나씩 순회하면서, 각 숫자에 대해 while 반복문을 사용해 해당 숫자가 0이 아닌 모든 자릿수로 나누어 떨어지는지 검사하는 것입니다. 조건을 만족하면 카운트를 증가시킵니다.예제로 이해하기입력START=10 END=20출력0이 아닌 모든 자릿수로 나누어 떨어지

  4. C++에서 수와 자릿수 합의 차이가 특정 값보다 큰 수의 개수 구하기

    두 개의 정수 N과 D가 주어집니다. N은 탐색 범위 [1, N]을 정의하고, D는 기준이 되는 차이값입니다. 이 문제의 목표는 범위 [1, N] 안에서 (수 − 그 수의 자릿수 합) > D 조건을 만족하는 모든 수를 찾아 그 개수를 구하는 것입니다.해결 방법은 간단합니다. 1부터 N까지의 수를 하나씩 순회하면서, 각 수에 대해 while 루프로 자릿수 합을 계산한 뒤, 원래 수에서 자릿수 합을 뺀 값이 D보다 큰지 확인하면 됩니다.예제로 이해하기입력N=15, D=5출력조건을 만족하는 수의 개수: 6설명10, 11, 12, 1

  5. C++로 특정 범위 내 두 수의 공배수(회색 타일) 개수 구하기

    두 개의 숫자 A와 B가 주어지고, 숫자의 범위를 정의하는 START와 END 값도 함께 제공됩니다. 여기서 A번째 타일에는 흰색 페인트가, B번째 타일에는 검은색 페인트가 칠해져 있다고 가정합니다. 만약 어떤 타일에 흰색과 검은색이 모두 칠해져 있다면 그 타일은 회색(grey)이 됩니다. 우리의 목표는 이러한 회색 타일의 총 개수를 구하는 것입니다.이 문제는 START부터 END까지의 숫자를 하나씩 순회하면서, 각 숫자가 A와 B 양쪽 모두의 배수인지 확인하는 방식으로 해결할 수 있습니다. 조건을 만족하면 카운트를 증가시키면 됩니

  6. C++로 구하는 자릿수의 합이 Y인 범위 [START, END] 내 숫자 개수

    두 개의 숫자 START와 END가 주어져 하나의 숫자 범위를 정의합니다. 이 문제의 목표는 해당 범위 [START, END] 안에서 각 자릿수의 합이 주어진 값 Y와 같은 숫자가 모두 몇 개인지 찾는 것입니다.해결 방법은 간단합니다. START부터 END까지 숫자를 하나씩 순회하면서, 각 숫자에 대해 while 루프를 이용해 자릿수의 합을 계산하고, 그 합이 Y와 같다면 카운트를 1씩 증가시키면 됩니다.예제로 이해하기입력 예시 1START=10 END=20 Y=4출력 결과 1자릿수의 합이 Y와 같은 숫자의 개수: 1설명숫자 13은

  7. C++로 자릿수 합이 N이고 M으로 나누어떨어지며 0을 포함하지 않는 수의 개수 구하기

    문제 소개두 개의 숫자 START와 END가 주어져 하나의 숫자 범위를 정의합니다. 이 문제의 목표는 [START, END] 범위 내에서 다음 세 가지 조건을 모두 만족하는 숫자의 개수를 찾는 것입니다.숫자에 0인 자릿수가 하나도 없어야 합니다.모든 자릿수의 합이 주어진 값 N과 같아야 합니다.해당 숫자는 M으로 나누어떨어져야 합니다.이를 해결하기 위해 START부터 END까지의 숫자를 순회하면서, 각 숫자에 대해 while 루프를 사용해 자릿수의 합을 계산합니다(단, 모든 자릿수가 0이 아닌 경우에만). 계산된 자릿수 합이 N과

  8. C++ 정렬된 배열에서 K 이하인 요소 개수 구하기: 선형 탐색부터 이진 탐색까지

    문제 개요정수로 이루어진 정렬된 배열이 주어졌을 때, 배열의 요소 중 주어진 값 K보다 작거나 같은 요소가 몇 개인지 세는 것이 이 글의 목표입니다. 단순히 처음부터 끝까지 확인하는 방법과, 배열이 정렬되어 있다는 특성을 활용한 이진 탐색 방법 두 가지를 살펴보겠습니다.입력 예시 1Arr[]= { 1, 2, 3, 14, 50, 69, 90 } K=12출력K 이하인 숫자의 개수: 3설명숫자 1, 2, 3이 12보다 작거나 같습니다.입력 예시 2Arr[]= { 12, 13, 13, 13, 14, 50, 54, 100 } K=14출력K

  9. C++에서 합이 S이고 XOR이 K가 되는 양의 정수 순서쌍 개수 구하기

    문제 개요 정수 S와 K가 주어졌을 때, 두 양수의 합이 S가 되고 비트 단위 XOR 연산 결과가 K가 되는 순서쌍(ordered pair)의 개수를 구하는 것이 목표입니다. 해결 방법은 간단합니다. i를 1부터 S-1까지, j를 i+1부터 S까지 증가시키며 가능한 모든 쌍을 탐색하고, 어떤 쌍 (i, j)가 i + j == S와 i ^ j == K 조건을 동시에 만족하면 카운트를 2씩 늘립니다. (i, j)와 (j, i)는 원소의 순서가 다르므로 서로 다른 순서쌍으로 각각 세어 주기 위함입니다. 입출력 예제 입력 S = 10,

  10. C++로 곱이 N보다 작은 순서쌍의 개수 구하기

    하나의 수 N이 주어졌을 때, 두 양의 정수로 이루어진 순서쌍(ordered pair) 중에서 곱이 N보다 작은 쌍의 개수를 구하는 것이 목표입니다.가장 직관적인 방법은 i를 1부터 N 미만까지, j를 1부터 (i*j)가 N 미만일 때까지 반복하면서 조건을 만족할 때마다 카운트를 1씩 증가시키는 것입니다.예제를 통해 자세히 살펴보겠습니다.입력 예시 1N=4출력 결과 1곱이 N보다 작은 순서쌍의 개수: 5설명: 조건을 만족하는 쌍은 (1,1), (1,2), (1,3), (2,1), (3,1)로 총 5개입니다.입력 예시 2N=100출력

  11. C++로 세제곱의 합이 N이 되는 순서쌍 (a, b)의 개수 구하기

    숫자 N이 하나 주어졌을 때, 두 양수의 세제곱 합이 N과 같아지는 순서쌍(ordered pair)의 개수를 찾는 것이 목표입니다. 다시 말해 방정식 a3 + b3 = N을 만족하는 모든 (a, b) 조합을 구하면 됩니다. 이때 a는 N의 세제곱근(∛N) 이하 범위에서 탐색하고, b는 (N − a3)의 세제곱근으로 계산할 수 있습니다. 예시 입력 N=35 출력 Count of pairs of (a,b) where a^3+b^3=N: 2 설명 가능한 순서쌍은 (2, 3)과 (3, 2)입니다. 23 + 33 = 8 + 27 = 35이

  12. C++로 구현하는 a² + b² = N을 만족하는 순서쌍 (a, b) 개수 찾기

    하나의 자연수 N이 주어졌을 때, 두 양의 정수의 제곱합이 N이 되는 순서쌍(ordered pair)의 개수를 구하는 것이 이 글의 목표입니다.다시 말해, 방정식 a2 + b2 = N을 만족하는 모든 (a, b) 조합을 찾는 문제입니다. 여기서 a는 √N 이하의 값만 살펴보면 충분하고, 각 a에 대해 b는 √(N − a2)로 계산할 수 있습니다.예시를 통해 자세히 이해해 보겠습니다.입력N = 100출력a^2+b^2=N을 만족하는 쌍 (a, b)의 개수: 2설명가능한 쌍은 (6, 8)과 (8, 6)입니다. 6^2 + 8^2 = 36

  13. C++에서 (i+j)가 A와 B로 모두 나누어지는 순서쌍 (i, j)의 개수 구하기

    문제 소개변수 N, M, A, B가 주어졌을 때, 두 양의 정수로 이루어진 순서쌍 (i, j) 중에서 그 합 (i + j)이 A와 B로 모두 나누어지는 쌍의 개수를 구하는 것이 목표입니다. 이때 i와 j는 각각 1 ≤ i ≤ N, 1 ≤ j ≤ M의 범위를 가져야 합니다.가장 직관적인 풀이 방법은 i와 j에 대해 두 개의 반복문을 사용해 가능한 모든 쌍을 탐색하는 것입니다. 각 쌍마다 (i + j) % A == 0 && (i + j) % B == 0 조건을 검사하고, 조건을 만족하면 카운트를 1씩 증가시킵니다.구체적인 예제를 통해

  14. C++로 구하는 두 배열에서 합이 K가 되는 고유한 쌍의 개수

    두 개의 정수 배열 Arr1[]과 Arr2[], 그리고 목표 합 K가 주어졌을 때, 두 배열의 원소로 구성된 쌍 (Arr1[i], Arr2[j]) 가운데 Arr1[i] + Arr2[j] == K를 만족하는 고유한 쌍의 개수를 구하는 것이 목표입니다.가장 직관적인 방법은 두 개의 반복문으로 i와 j를 순회하면서 모든 조합을 확인하는 것입니다. 합이 K가 되고, 아직 unordered_map<int, int>에 등록되지 않은 쌍이라면 맵에 추가하고 카운트를 1 증가시킵니다. 이렇게 하면 같은 값을 가진 쌍이 여러 번 발견되더

  15. C++에서 두 숫자 X, Y만으로 만들 수 있는 숫자 개수 구하기

    이 문제에서는 세 개의 숫자 X, Y, N이 주어지며, N은 탐색 대상이 되는 범위 [1, N]을 정의합니다. 목표는 1부터 N 사이의 숫자 중에서 오직 X와 Y만을 원하는 횟수만큼 반복해 더하여 만들 수 있는 숫자가 총 몇 개인지 찾아내는 것입니다.예를 들어 X=2, Y=3이라고 가정해 보겠습니다. 숫자 6은 2를 세 번 더한 값(2+2+2)이 될 수도 있고, 3을 두 번 더한 값(3+3)이 될 수도 있습니다. 마찬가지로 7은 2를 두 번, 3을 한 번 더한 값(2+2+3)으로 표현할 수 있습니다.해결 방법은 의외로 단순합니다.

  16. C++로 N 미만의 완전제곱수와 비제곱수 개수 구하기

    하나의 정수 N이 주어졌을 때, 목표는 1부터 N 사이(또는 N 미만)의 수 중 완전제곱수(perfect square)의 개수와 비제곱수(non-square)의 개수를 각각 구하는 것입니다.예를 들어 N=20이라면, 완전제곱수는 1, 4, 9, 16으로 총 4개이고, 나머지 16개는 모두 비제곱수입니다.단순 접근 방식(Naive Approach)가장 직관적인 방법은 1부터 N까지의 모든 수를 하나씩 탐색하면서 해당 수가 완전제곱수인지 확인하는 것입니다.어떤 수 i가 완전제곱수인지 판별하는 기준은 다음과 같습니다.floor(sqrt(

  17. C++로 주어진 패턴으로 끝나는 문자열 개수 세기

    문자열 배열 str[]과 패턴 문자열 pat이 주어졌을 때, 배열의 요소 중 패턴 pat으로 끝나는 문자열의 개수를 구하는 것이 목표입니다.해결 방법은 간단합니다. 배열의 각 문자열을 순회하면서 뒤에서부터 문자를 하나씩 비교하고, 모두 일치하면 카운트를 증가시키면 됩니다.예제로 이해하기입력 1str[] = { kittens, hens, deers, dogs }, pat = ens출력 1주어진 패턴으로 끝나는 문자열 개수: 2설명: kittens과 hens가 ens로 끝납니다.입력 2str[] = { tickets, wickets,

  18. C++로 특정 범위 내 소수 개수 구하기

    두 개의 범위 변수 START와 END가 주어졌을 때, [START, END] 구간 안에 포함된 소수(Prime Number)의 개수를 구하는 것이 목표입니다.소수 판별은 간단합니다. 숫자 i에 대해 1과 i/2 사이에 있는 어떤 수로도 나누어떨어지지 않는다면 그 수는 소수입니다. 이 조건을 만족할 때마다 카운트를 증가시키면 됩니다.예제로 이해하기입력Start=1 End=20출력Primes in Ranges : 8설명1과 20 사이의 소수: 2, 3, 5, 7, 11, 13, 17, 19입력Start=100 End=200출력Prim

  19. C++에서 합이 주어진 값 x와 같은 4개의 배열에서 쿼드러플 개수 구하기

    네 개의 배열 A[], B[], C[], D[]가 주어졌을 때, A[i] + B[j] + C[k] + D[l] = x를 만족하는 모든 쿼드러플(네 원소 조합)의 개수를 구하는 것이 목표입니다. 네 배열은 모두 동일한 개수의 원소 N개를 가지고 있습니다.가장 기본적인 방법은 각 배열을 한 번씩 순회하면서 A[i] + B[j] + C[k] + D[l] == x를 만족하는지 확인하고, 조건이 참이면 카운트를 증가시키는 것입니다.예제를 통해 자세히 이해해 보겠습니다.입력A[]={ 1,2,3}; B[]={ 2,3,2}; C[]={ 4,3,1

  20. C++로 원을 N번 잘랐을 때 조각 수 계산하기

    정수 N은 하나의 2차원 원에 적용된 절단 횟수를 나타내며, 각 절단은 원의 중심을 지나면서 원을 둘로 나눕니다. 목표는 N번의 절단이 끝난 후 원이 몇 개의 조각으로 나뉘는지 구하는 것입니다. 모든 절단이 중심을 지나는 경우에는 아래와 같은 간단한 공식으로 조각 수를 구할 수 있습니다. 조각 수 = 2 × 절단 횟수 예시로 이해하기 예시 1 입력: N = 1 출력: 원의 조각 수 = 2 설명: 절단 한 번이 원을 정확히 두 부분으로 나눕니다. 예시 2 입력: N = 3 출력: 원의 조각 수 = 6 설명: 세 번의 절단이 모두 중

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:221/300  20-컴퓨터/Page Goto:1 215 216 217 218 219 220 221 222 223 224 225 226 227