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

C++

  1. C++에서 X와의 합이 X와의 XOR과 같은 숫자 개수 구하기

    하나의 정수 X가 주어졌을 때, 0부터 X 사이에 있는 숫자 중에서 X와의 합(Sum)이 X와의 XOR(배타적 논리합) 결과와 동일한 숫자의 개수를 구하는 것이 목표입니다. 가장 직관적인 방법은 i=0부터 i<=X까지 모든 숫자를 하나씩 확인하면서, 각 i에 대해 조건식 (i+X==i^X)이 참이면 카운트를 1씩 증가시키는 것입니다. 예시를 통해 좀 더 쉽게 이해해 보겠습니다. 입력 − X=6 출력 − X와의 합이 X와의 XOR과 같은 숫자의 개수: 2 설명 − 조건을 만족하는 숫자는 0과 1뿐입니다. 입력 − X=20 출력

  2. C++에서 N과의 차이가 N과의 XOR과 같은 숫자 개수 구하기

    하나의 숫자 N이 주어집니다. 목표는 0부터 N 사이의 수 중에서 N과의 차이(N − i)가 N과의 XOR(i ^ N)과 같아지는 수의 개수를 찾는 것입니다.가장 단순한 방법은 i를 0부터 N까지 하나씩 순회하면서 각 i에 대해 (N − i) == (i ^ N) 조건을 검사하고, 조건을 만족할 때마다 카운트를 증가시키는 것입니다.예시입력 − N = 6출력 − N과의 차이가 N과의 XOR과 같은 숫자의 개수: 4설명 − 해당 숫자는 0, 2, 4, 6입니다.입력 − N = 20출력 − N과의 차이가 N과의 XOR과 같은 숫자의 개수:

  3. C++에서 N과 XOR한 값이 N과 OR한 값과 같은 숫자 개수 세기

    문제 개요숫자 N이 주어졌을 때, 0부터 N 사이의 숫자 중 N과 OR 연산을 한 결과가 N과 XOR 연산을 한 결과와 같은 숫자의 개수를 구하는 것이 목표입니다.구현 방법은 간단합니다. i=0부터 i<=N까지 모든 숫자를 순회하면서, 각 i에 대해 (N^i == i|N) 조건을 만족하는 경우 카운트를 1씩 증가시키면 됩니다.예시를 통해 자세히 살펴보겠습니다.입력 − X=6출력 − N과 OR한 값이 XOR한 값과 같은 숫자의 개수: 2설명 − 해당하는 숫자는 0, 1입니다.입력 − X

  4. C++로 숫자를 3부분으로 나누는 방법의 수 세기

    양의 정수 N이 주어졌을 때, 이 숫자를 3개의 부분으로 나눌 수 있는 모든 방법의 수를 구하는 것이 목표입니다. 각 부분은 서로 같아도 되고 달라도 되며, N의 범위는 [1, 5000]입니다.이 문제는 세 개의 for 반복문을 사용해 해결할 수 있습니다. 숫자의 세 부분에 해당하는 값을 하나씩 탐색하면서, 가장 안쪽 반복문에서 세 값의 합이 N과 같은지 확인합니다. 합이 N과 일치하면 방법의 수(count)를 1씩 증가시킵니다.예제로 이해하기입력 − N = 5출력 − N을 3부분으로 나누는 방법의 수: 2설명

  5. C++에서 배열 원소 곱의 후행 0(뒤따르는 0) 개수 구하기

    문제 소개크기가 N인 양의 정수 배열 Arr[]가 주어졌을 때, 배열의 모든 원소를 곱한 결과에서 뒤에 붙는 0(trailing zero)의 개수를 구하는 것이 목표입니다.이 문제는 각 숫자의 인수를 세는 방식으로 해결할 수 있습니다. 2와 5의 곱이 10이 되어 후행 0을 하나 만들어 내기 때문에, 각 원소에서 2와 5가 각각 몇 번씩 등장하는지 세면 됩니다. 최종적으로는 두 카운트 중 더 작은 값이 곱의 후행 0 개수가 됩니다.예를 들어 2가 4개, 5가 6개 있다면 곱에는 4개의 후행 0이 생깁니다.2 × 2 × 2 × 2 ×

  6. C++로 구현하는 '같은 소수의 합'으로 표현 가능한 숫자 개수 세기

    문제 소개 양의 정수로 이루어진 크기 N의 배열 Arr[]가 주어집니다. 목표는 배열 요소 중 같은 소수를 반복해서 더한 합으로 표현할 수 있는 숫자가 몇 개인지 세는 것입니다. 예를 들어 4 = 2 + 2, 6 = 3 + 3 또는 2 + 2 + 2처럼 하나의 소수만으로 특정 수를 만들 수 있다면 그 숫자는 조건을 만족합니다. 이 문제의 핵심 관찰은 다음과 같습니다. 홀수 소수끼리의 합, 또는 짝수 소수끼리의 합은 항상 짝수가 됩니다. 짝수 소수는 2가 유일하므로, 2를 계속 더하면 4 이상의 모든 짝수를 표현할 수 있습니다.

  7. C++에서 이진 표현이 모두 1인 숫자 개수 세기

    개요양의 정수 N이 주어졌을 때, N 이하의 수 중에서 이진 표현이 모두 1로만 이루어진 숫자가 몇 개 있는지 구하는 것이 이 글의 목표입니다. 예를 들어 1은 이진수로 1, 3은 11, 7은 111, 15는 1111처럼 표현되는 숫자들입니다.이런 숫자들을 자세히 보면 모두 2i − 1 형태라는 공통점이 있습니다. 여기서 지수 i는 1부터 시작합니다. 따라서 N 이하에서 이러한 숫자를 찾으려면 2i − 1 ≤ N 인지만 확인하고, 조건을 만족할 때마다 카운트를 증가시키면 됩니다.예제로 이해하기입력: N = 15출력: 이진 표현이 모

  8. C++로 2차원 공간에서 조건을 만족하는 점의 삼중항 쌍(A, B, C) 개수 세기

    문제 소개2차원 평면 위에 N개의 점이 입력으로 주어집니다. 목표는 입력된 점들 중 세 점으로 이루어진 삼중항(triplet) 가운데, 한 점이 나머지 두 점을 잇는 선분의 중점(mid-point)이 되는 경우의 수를 구하는 것입니다. 즉, 삼중항이 (A, B, C)일 때 B가 A와 C의 중점이 되어야 하며, 물론 A, B, C 중 어떤 조합이든 상관없습니다.이 문제는 다음과 같은 방식으로 해결할 수 있습니다. 먼저 모든 점을 pair<int,int> 형태로 벡터(vector)에 저장한 뒤, 벡터의 모든 점을 집합(set

  9. C++로 풀는 계단 오르기 문제: 1, 2, 3칸씩 이동해 n번째 계단에 도달하는 방법의 수 구하기

    계단의 총 단계 수 n이 주어졌을 때, 사람은 한 번에 1칸, 2칸 또는 3칸씩 건너뛰면서 다음 층으로 올라갈 수 있습니다. 이 글의 목표는 이러한 방식으로 다음 층에 도달할 수 있는 모든 경우의 수를 구하는 것입니다. 이 문제는 재귀 호출로 자연스럽게 해결할 수 있습니다. 핵심 아이디어는 i번째 계단에 도달하려면 반드시 i-1번째 계단(1칸 점프), i-2번째 계단(2칸 점프), 또는 i-3번째 계단(3칸 점프) 중 하나에서 점프해 왔어야 한다는 점입니다. 예시를 통해 자세히 살펴보겠습니다. 입력 N = 3 출력 1, 2, 3칸

  10. C++에서 반복 숫자가 포함된 숫자의 철자 표기 방법 수 구하기

    문제 개요반복된 숫자를 여러 개 포함하는 숫자가 문자열 형태로 주어졌을 때, 이 숫자를 읽는(철자하는) 방법이 총 몇 가지인지 구하는 것이 목표입니다. 예를 들어 112233은 더블 원, 더블 투, 더블 쓰리(double one, double two, double three) 또는 원 원 투 투 쓰리 쓰리(one one two two three three)처럼 서로 다른 방식으로 읽을 수 있습니다.해결의 핵심은 연속된 숫자를 확인하는 것입니다. 숫자가 13이라면 원 쓰리(one three)로 읽는 한 가지 방법만 존재합니다. 하지만

  11. C++로 두 배열의 소수 쌍에서 얻을 수 있는 고유한 합계 개수 구하기

    소수와 비소수가 섞여 있는 두 개의 배열이 주어졌을 때, 각 배열에서 소수를 하나씩 골라 만들 수 있는 모든 쌍의 합 중 서로 다른 값(고유한 합계)이 몇 가지인지 구하는 것이 이번 글의 목표입니다.핵심 아이디어는 단순합니다. 두 배열에서 소수 한 개씩을 짝지어 합을 구하고, 그 값을 중복을 허용하지 않는 set<int>에 저장하는 것입니다. set은 동일한 값을 한 번만 보관하므로, 최종적으로 set의 크기가 곧 고유한 합계의 개수가 됩니다.문제 이해하기예제 1입력Arr1[] = { 1, 2, 3 }Arr2[] = {

  12. C++에서 주어진 문자열을 출력하는 데 필요한 줄 수 구하기

    알파벳 소문자로 이루어진 문자열 Str과, 영어 알파벳 각각의 너비를 저장한 배열 widths[]가 주어집니다. 이 문제의 목표는 폭이 10인 페이지에 해당 문자열을 출력할 때 필요한 줄(line)의 개수를 구하고, 마지막 줄에 남는 너비도 함께 출력하는 것입니다.해결 방법은 간단합니다. 문자열을 처음부터 끝까지 순회하면서 현재 문자의 너비를 누적하고, 누적된 값이 10에 도달하면 줄 수를 하나 증가시키면 됩니다.예제를 통해 자세히 살펴보겠습니다.입력Str = ababababab widths[] = {2, 1, 3, 1, 1, 1,

  13. C++로 특정 범위 내 설정되지 않은 비트(0비트) 개수 계산하기

    정수 num과 왼쪽(left), 오른쪽(right) 값으로 구성된 범위가 주어집니다. 해야 할 작업은 먼저 해당 숫자의 이진수 표현을 구한 다음, 왼쪽 비트부터 오른쪽 비트까지 차례대로 확인하면서 주어진 범위 안에 포함된 설정되지 않은 비트(unset bit)의 개수를 세는 것입니다.이진수에서 설정되지 않은 비트(unset bit)는 0으로 표현됩니다. 정숫값을 이진수로 변환하면 0과 1의 조합으로 나타나는데, 컴퓨터 용어로 0에 해당하는 비트를 unset bit라고 부릅니다.입력·출력 예시입력 − int number = 50, l

  14. C++에서 숫자의 설정되지 않은 비트(Unset Bit) 개수 구하기

    C++에서 숫자의 설정되지 않은 비트(Unset Bit)란? 정수 num이 주어졌을 때, 먼저 이 수를 이진수로 변환한 뒤 설정되지 않은 비트(unset bit), 즉 0의 총 개수를 계산하는 것이 목표입니다. 이진수에서 값이 0인 비트를 설정되지 않은 비트(unset bit)라고 합니다. 정수를 이진수로 표현하면 0과 1의 조합으로 나타나며, 컴퓨터 관점에서 0에 해당하는 자리가 바로 unset bit입니다. 예제 1 입력 − int number = 50 출력 − 숫자의 총 unset 비트 개수: 5 설명 − 50의 이진 표현은

  15. C++로 2부터 10까지의 모든 숫자로 나누어 떨어지는 수의 개수 구하기

    이 글에서는 주어진 숫자 num이 있을 때, 1부터 num까지의 범위 안에서 2, 3, 4, 5, 6, 7, 8, 9, 10의 모든 수로 나누어 떨어지는 숫자가 몇 개인지 계산하는 방법을 다룹니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다.입력 − int num = 10000출력 − 2부터 10까지의 모든 숫자로 나누어 떨어지는 수의 개수: 3설명 − 1부터 10000 사이에는 2부터 10까지 모든 숫자로 나누어 떨어지는 수가 정확히 3개 존재하며, 그 값은 2520, 5040, 7560입니다.입력 − int num = 2000

  16. C++ 배열에서 쌍의 곱이 배열 안에 존재하는 쌍의 개수 구하기

    문제 개요정수형 요소로 이루어진 배열이 주어졌을 때, 배열의 요소들로 쌍(pair)을 만들고 각 쌍의 곱을 계산한 뒤, 그 곱이 원래 배열 안에 존재하는지 확인하는 것이 이번 문제의 목표입니다.입력 − int arr[] = {6, 2, 3, 1, 5, 10}출력 − 곱이 같은 배열에 존재하는 쌍의 개수 − 7설명 − 주어진 배열에서 만들 수 있는 쌍은 (6, 2), (6, 3), (6, 1), (6, 5), (6, 10), (2, 3), (2, 1), (2, 5), (2, 10), (3,

  17. C++에서 두 배열로 만들 수 있는 합이 짝수인 쌍의 개수 구하기

    정수형 요소로 이루어진 두 개의 배열 arr_1[]과 arr_2[]가 주어졌을 때, 각 배열에서 요소를 하나씩 선택하여 쌍(pair)을 만들고, 그 쌍의 합이 짝수인지 판별한 뒤 조건을 만족하는 쌍의 총 개수를 구하는 것이 이 글의 목표입니다. 예제 예제 1 입력 int arr_1[] = {2, 3, 7, 1, 4}; int arr_2[] = {2, 4, 1, 3}; 출력 합이 짝수인 쌍의 개수: 10 설명 두 배열로 만들 수 있는 모든 쌍과 그 합은 다음과 같습니다. (2, 2) = 4 → 짝수 (유효) (2, 4) = 6

  18. C++로 합이 4로 나누어 떨어지는 배열 쌍의 개수 구하기

    문제 이해하기정수형 요소로 이루어진 배열이 주어졌을 때, 배열에서 두 원소를 골라 쌍(pair)을 만들고, 각 쌍의 합이 4로 나누어 떨어지는지 확인한 뒤, 조건을 만족하는 쌍의 개수를 세는 것이 이 글의 목표입니다.예시 1입력 − int arr[] = {4, 1, 2, 0, 2}출력 − 합이 4로 나누어 떨어지는 쌍의 개수: 2설명 − 주어진 배열로 만들 수 있는 모든 쌍과 그 합은 다음과 같습니다.(4, 1) = 5 → 나누어 떨어지지 않음(4, 2) = 6 → 나누어 떨어지지 않음(4, 0) = 4 → 나누어 떨어짐 ✓(1,

  19. C++에서 합이 K로 나누어떨어지는 배열 쌍 개수 구하기

    정수형 요소로 이루어진 배열이 주어졌을 때, 배열에서 만들 수 있는 모든 쌍(pair)을 구성하고 각 쌍의 합을 계산한 뒤, 그 합이 주어진 정수 k로 나누어떨어지는지 판별하는 문제입니다. 이 글에서는 직관적인 브루트 포스 방식과 나머지 연산을 활용한 효율적인 방식, 두 가지 접근 방법을 C++ 코드와 함께 살펴봅니다.문제 예시예제 1입력 − int arr[] = {4, 1, 2, 0, 2}, int k = 2출력 − 합이 k로 나누어떨어지는 쌍의 개수: 6설명 − 배열에서 만들 수 있는 쌍과 그 합은 다음과 같습니다. (4, 1)

  20. C++로 배열에서 두 요소의 세트 비트 개수가 같은 쌍 개수 구하기

    정수형 요소로 이루어진 배열이 주어졌을 때, 배열의 요소들로 만들 수 있는 모든 쌍(pair)을 구성하고 각 쌍에 속한 두 요소의 세트 비트(set bit) 개수를 계산하여, 두 요소의 세트 비트 수가 서로 같은 쌍이 몇 개인지 확인하는 것이 이번 문제의 목표입니다.여기서 세트 비트란 이진수에서 1로 표현되는 비트를 의미합니다. 정수 값을 이진수로 변환하면 0과 1의 조합으로 나타나는데, 컴퓨터 용어에서 이때의 숫자 1을 세트 비트라고 부릅니다.예제 1입력int arr[] = {6, 5, 1, 3, 7}출력두 요소의 세트 비트 개수

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