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

C++

  1. C++에서 주어진 숫자 시퀀스의 가능한 디코딩 개수 구하기

    숫자 시퀀스를 나타내는 문자열이 하나 주어집니다. 각 숫자는 1부터 26까지의 영어 알파벳으로 디코딩할 수 있습니다. 즉, 1은 A, 2는 B처럼 대응되며 26은 Z가 됩니다. 이때 목표는 주어진 숫자 시퀀스로 만들 수 있는 모든 디코딩의 개수를 구하는 것입니다. 예를 들어 시퀀스가 123이라면 가능한 디코딩은 ABC(1-2-3), LC(12-3), AW(1-23)의 세 가지이므로 정답은 3입니다. 예제로 이해하기 입력 − str[]="1532" 출력 − 주어진 숫자 시퀀스의 가능한 디코딩

  2. C++로 주어진 크기의 직사각형 내부에 만들 수 있는 마름모 개수 구하기

    높이(height)와 너비(width)가 주어진 직사각형이 있고, 이 직사각형은 왼쪽 아래 모서리가 원점 (0, 0)에 위치한 2차원 좌표계 위에 놓여 있습니다. 이때 목표는 다음 조건을 모두 만족하는 마름모가 직사각형 내부에 몇 개나 만들어질 수 있는지 세는 것입니다.마름모의 넓이는 0보다 커야 합니다.마름모의 두 대각선은 각각 x축과 y축에 평행해야 합니다.마름모의 네 꼭짓점은 모두 정수 좌표를 가져야 합니다.예제예제 1입력 − 길이 = 3, 너비 = 3출력 − 주어진 크기의 직사각형 내부에 만들 수 있는

  3. C++에서 0을 포함하는 최대 d자릿수 양의 정수 개수 구하기

    문제 개요 자릿수를 나타내는 숫자 d가 주어집니다. 목표는 최대 d자릿수이면서 숫자 0을 적어도 하나 포함하는 양의 정수의 개수를 구하는 것입니다. 즉, 1자릿수, 2자릿수, 3자릿수 … d자릿수인 모든 양의 정수 중 0이 하나라도 들어 있는 수를 전부 세어야 합니다. 수학적 배경 먼저 “d자릿수이면서 0을 적어도 하나 포함하는 수”가 몇 개인지 구해 보겠습니다. 예를 들어 d=3일 때, 0을 하나 이상 포함하는 3자릿수를 만들 수 있는 경우의 수는 다음과 같습니다. 백의 자리(d1): 1~9 → 9가지 십의 자리(d2): 0~9

  4. C++ 그리디 알고리즘: 1부터 k까지 모든 숫자를 만들기 위해 배열에 추가해야 하는 최소 숫자 개수 구하기

    문제 설명숫자 배열 nums와 정수 k가 주어졌다고 가정해 보겠습니다. 우리는 nums에 최소한의 숫자를 삽입하여, [1, k] 범위 내의 어떤 숫자든 nums의 부분집합(원소들의 합)으로 표현할 수 있도록 만들어야 합니다.예를 들어 입력이 nums = [3, 5], k = 6이라면 출력은 2가 됩니다. 1과 2를 삽입하면 다음과 같이 1부터 6까지의 모든 숫자를 만들 수 있기 때문입니다.1 = [1]2 = [2]3 = [3]4 = [1, 3]5 = [5]6 = [1, 5]접근 방법이 문제는 그리디(Greedy) 알고리즘으로 효율적

  5. C++에서 두 숫자를 더할 때 필요한 캐리(받아올림) 연산 횟수 계산하기

    두 개의 숫자 num_1과 num_2가 주어졌을 때, 이 두 숫자를 더하는 과정에서 발생하는 캐리(받아올림) 연산의 횟수를 구하는 것이 목표입니다. 예를 들어 123과 157을 더하면 캐리 연산은 1번 발생합니다. (7+3=10, 1+2+5=8, 1+1=2)예시로 이해하기입력 − num_1=432, num_2=638출력 − 두 숫자를 더하는 데 필요한 캐리 연산 횟수: 2설명 − 오른쪽에서 왼쪽으로 자릿수를 더하며 캐리를 세면 다음과 같습니다.(2+8=10, carry 1 ) count=1, (3+3+1=7, carry 0 ) co

  6. C++로 1부터 N까지의 수 쌍 중 곱이 합으로 나누어떨어지는 쌍 세기

    문제 개요 하나의 숫자 N이 주어졌을 때, 1부터 N 사이의 숫자들 중에서 두 수의 곱이 두 수의 합으로 나누어떨어지는 쌍의 개수를 구하는 것이 목표입니다. 예시를 통해 자세히 살펴보겠습니다. 입력 − N=11 출력 − 곱이 합으로 나누어떨어지는 쌍의 개수: 1 설명 − 숫자 3과 6의 곱은 18이고, 두 수의 합은 9입니다. 9는 18을 나머지 없이 완전히 나눌 수 있습니다. 입력 − N=30 출력 − 곱이 합으로 나누어떨어지는 쌍의 개수: 12 설명 − 조건을 만족하는 쌍은 다음과 같습니다. (3, 6), (4, 12), (5,

  7. C++로 해결하는 '평균이 배열 안에 존재하는 쌍' 개수 세기 문제

    정수 배열이 주어지며, 각 원소는 -1000부터 1000 사이의 범위에 있다고 가정합니다. 우리의 목표는 두 원소의 평균값 역시 그 배열 안에 존재하는 원소 쌍(pair)의 개수를 찾는 것입니다.예를 들어 배열이 arr[] = [1, 2, 3, 4]라면, 조건을 만족하는 쌍은 (1, 3)과 (2, 4)입니다. 1과 3의 평균은 2이고, 2와 4의 평균은 3인데, 2와 3 모두 배열에 존재하기 때문입니다. 따라서 정답은 2가 됩니다.예제로 이해하기입력 − arr[] = { -1, 2, 5, -3, 8, 10 }출력 − 평균이 같은 배

  8. C++에서 주어진 숫자와 동일한 GCD를 가지는 자연수 쌍의 개수 구하기

    문제 이해하기 이 문제에서는 start, end, number라는 세 개의 입력 변수가 주어집니다. 목표는 start부터 end까지 범위 내에 있는 자연수 쌍 중에서 최대공약수(GCD)가 number와 정확히 일치하는 쌍의 개수를 찾는 것입니다. 다시 말해, GCD(A, B) = number이면서 A와 B가 모두 [start, end] 범위에 속하는 경우를 세면 됩니다. 예제를 통해 자세히 살펴보겠습니다. 입력: start=5, end=20, number=8 출력: GCD가 주어진 숫자와 같은 자연수 쌍의 개수: 3 설명: 5부터

  9. C++에서 지나가는 자동차 쌍 개수 세기: 단순 탐색부터 O(N) 최적화까지

    문제 개요 길이가 N인 배열이 주어지며, 배열에는 0과 1만 들어 있습니다. 값 1은 서쪽 방향으로 달리는 자동차를, 값 0은 동쪽 방향으로 달리는 자동차를 의미합니다. 두 자동차 A와 B가 0 ≤ A < B < N 조건을 만족하고, A가 동쪽으로(0) B가 서쪽으로(1) 진행한다면 이를 지나가는 자동차 쌍으로 세어 1씩 카운트합니다. 즉, 0의 인덱스가 1의 인덱스보다 앞선 (0, 1) 쌍의 개수를 구하는 문제입니다. 예시를 통해 살펴보겠습니다. 입력 − arr[] = {1, 0, 1, 0, 1} 출력 − 지나가는 자동

  10. C++에서 맨해튼 거리와 동일한 거리를 갖는 경로의 개수 구하는 방법

    2차원 좌표평면 위의 두 점 (x1, y1)과 (x2, y2)가 주어졌을 때, 두 점 사이의 맨해튼 거리(Manhattan Distance)와 정확히 같은 거리를 갖는 모든 경로의 개수를 구하는 것이 목표입니다.맨해튼 거리란?두 점 (x1, y1)과 (x2, y2) 사이의 맨해튼 거리는 다음과 같이 정의됩니다.MD = |x1 − x2| + |y1 − y2|설명의 편의를 위해 A = |x1 − x2|, B = |y1 − y2|라고 하겠습니다.맨해튼 거리와 같은 거리를 갖는 모든 경로는 A개의 수평 이동과 B개의 수직 이동, 즉 총 (

  11. C++로 문장 속 회문(Palindrome) 단어 개수 구하기

    문제 이해하기 영어 문장이 담긴 문자열이 하나 주어집니다. 목표는 이 문장에서 회문(palindrome)에 해당하는 단어가 몇 개인지 세는 것입니다. 회문 단어란 앞에서부터 읽어도 뒤에서부터 읽어도 글자 순서가 완전히 같은 단어를 의미합니다. 예를 들어 문장이 “Madam speaks good Malayalam”이라면 회문 단어는 2개입니다(Madam, Malayalam). 참고: 단어에는 대문자와 소문자가 섞여 있을 수 있으며, 대소문자는 구분하지 않고 비교합니다. 예시 입력 − str = “My Mom and Anna left

  12. C++에서 연속된 0의 쌍 개수 구하는 방법

    문제 소개1에서 시작하는 수열 생성기가 있다고 가정해 보겠습니다. 이 생성기는 각 단계가 진행될 때마다 0은 10으로, 1은 01로 변환합니다. 따라서 단계가 거듭될수록 수열은 다음과 같이 변화합니다.1단계 – 012단계 – 10013단계 – 01101001 …목표는 주어진 단계 수에서 연속된 두 개의 0(00)이 등장하는 쌍의 개수를 구하는 것입니다. 예를 들어 단계가 1일 때 0의 쌍은 0개, 단계가 2 또는 3일 때는 각각 1개입니다.4단계 – 10010110011010015단계 – 011010011001011010010110

  13. C++에서 i*arr[i] > j*arr[j] 조건을 만족하는 배열 쌍 개수 구하기

    문제 개요숫자로 이루어진 배열이 주어졌을 때, 인덱스와 배열 요소의 곱을 비교하여 아래 조건을 만족하는 쌍(pair)의 개수를 찾는 것이 목표입니다.만약 i * arr[i] > j * arr[j]라면, (arr[i], arr[j])는 유효한 쌍입니다.예를 들어 배열이 [5, 4, 3, 2, 1]이라면, 조건을 만족하는 쌍은 [3, 1]과 [2, 1] 두 개입니다.예제로 이해하기예제 1입력 − arr[] = [1, 5, 4, 1, 2, 8, 3]출력 − i*arr[i] > j*arr[j] 조건을 만족하는 쌍의 개수: 3설명

  14. C++로 LCM(arr[i], arr[j]) > min(arr[i], arr[j])를 만족하는 배열 쌍의 개수 구하기

    양의 정수로 이루어진 배열이 주어졌을 때, LCM(arr[i], arr[j]) > min(arr[i], arr[j]) 조건을 만족하는 원소 쌍의 개수를 구하는 것이 목표입니다. 즉, 한 쌍을 이루는 두 원소의 최소공배수(LCM)가 두 원소 중 작은 값보다 커야 한다는 의미입니다. 참고: 쌍 (arr[i], arr[j])과 (arr[j], arr[i])는 같은 쌍이므로 중복해서 세어서는 안 됩니다. 예제로 이해하기 예제 1 입력 − arr[] = [1, 5, 4, 2] 출력 − 조건을 만족하는 쌍의 개수: 6 설명 − 다음 6개

  15. C++ 배열에서 최소 한 개의 요소가 소수인 쌍 개수 구하기

    양의 정수로 이루어진 배열이 주어졌을 때, 배열 요소 중 최소 한 개가 소수에 해당하는 서로 다른 쌍(pair)의 개수를 구하는 것이 목표입니다. 예를 들어 배열이 [1, 2, 3, 4]라면 만들 수 있는 쌍은 (1,2), (1,3), (2,3), (2,4), (3,4) 입니다. 예제로 살펴보기 입력 − arr[] = { 1, 2, 4, 8, 10 } 출력 − 최소 한 개의 요소가 소수인 쌍의 개수: 4 설명 − 배열에서 유일한 소수는 2이며, 2와 나머지 모든 요소를 짝지으면 (1,2), (2,4), (2,8), (2,10)의

  16. C++에서 합이 주어진 값 x와 같은 두 배열의 쌍 개수 구하기

    문제 개요 양수로만 구성된 두 개의 배열과 하나의 값 x가 주어집니다. 찾아야 하는 것은 첫 번째 배열에서 원소 A를, 두 번째 배열에서 원소 B를 선택하여 A + B = x를 만족하는 쌍 (A, B)의 개수입니다. 예제로 이해하기 입력 − arr_1[] = {1, 2, 5, 3, 4}, arr_2[] = {7, 0, 1, 3}, x = 6 출력 − 합이 x와 같은 쌍의 개수: 2 설명 − 조건을 만족하는 쌍은 (5, 1)과 (3, 3)입니다. 입력 − arr_1[] = {1, 1, 1}, arr_2[] = {2, 2}, x =

  17. C++에서 두 배열의 요소 쌍 중 모듈로(나머지) 연산 결과가 K가 되는 쌍 세기

    양의 정수로 이루어진 두 개의 배열과 값 K가 주어집니다. 목표는 첫 번째 배열의 요소 A와 두 번째 배열의 요소 B로 구성된 고유한 쌍 (A, B) 중에서 A % B = K 또는 B % A = K를 만족하는 쌍의 개수를 구하는 것입니다.예시로 이해하기입력 − arr_1[] = {1,2,5,3,4}; arr_2[] = {7,1,3}; k=2출력 − 모듈로 연산 결과가 K가 되는 두 배열의 쌍 개수: 2설명 − 해당 쌍은 (5,7), 즉 (arr_1[2], arr_2[1])로 7%5=2이며, (5,3), 즉 (arr_1[2], arr

  18. C++로 두 개의 BST에서 합이 x와 같은 노드 쌍 개수 구하기

    두 개의 이진 탐색 트리(Binary Search Tree, BST)와 값 x가 입력으로 주어졌을 때, 각 트리에서 노드를 하나씩 선택하여 두 노드 값의 합이 x와 같아지는 쌍의 개수를 구하는 것이 목표입니다. 예를 들어 BST_1에서 노드 1을, BST_2에서 노드 2를 가져와 두 데이터 값을 더했을 때 그 합이 x라면 카운트를 1 증가시킵니다.구체적인 예시를 통해 살펴보겠습니다.입출력 예시입력 출력 − 합이 x와 같은 두 BST의 노드 쌍 개수: 1설명 − 해당하는 쌍은 (8, 6)입니다.입력&nb

  19. C++로 N을 0으로 만드는 데 필요한 연산 횟수 구하기

    양의 정수 N이 주어졌을 때, N을 0으로 만들기 위해 필요한 연산 횟수를 구하는 것이 이 문제의 목표입니다. 여기서 적용되는 연산은 N = N - P이며, P는 N의 가장 작은 소인수(최소 소인수)입니다.예제로 이해하기입력 − N = 17출력 − N을 0으로 줄이는 데 필요한 연산 횟수: 1설명 − 17의 최소 소인수는 17 자신입니다. 따라서 연산은 단 한 번만 적용됩니다. 즉, 17 - 17 = 0이 됩니다.입력 − N = 20출력 − N을 0으로 줄이는 데 필요한 연산 횟수: 10설명 − 20의 최소 소인수는 2입니다. 2를

  20. C++에서 최대 고유 요소를 가지는 부분 수열의 개수 구하기

    문제 소개정수만으로 이루어진 배열 arr[]가 주어졌을 때, 고유한(중복되지 않는) 요소를 최대한 많이 포함하는 부분 수열의 개수를 구하는 것이 이 문제의 목표입니다.예를 들어 배열이 [4, 1, 2, 3, 4]라면, 고유 요소를 최대로 포함하는 부분 수열은 [4, 1, 2, 3]과 [1, 2, 3, 4], 두 가지입니다.예제로 이해하기입력 − arr[] = { 1, 3, 5, 4, 2, 3, 1 }출력 − 최대 고유 요소를 가지는 부분 수열의 개수: 4설명 − 고유한 요소는 1, 2, 3, 4, 5로 총 5개입니다. 해당하는 부분

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