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

C++

  1. C++로 이진 트리에서 합이 K인 모든 경로 찾아 출력하기

    이 문제에서는 하나의 이진 트리(binary tree)와 숫자 K가 주어지며, 트리 내에서 경로에 포함된 노드 값들의 합이 K와 같은 모든 경로를 찾아 출력해야 합니다.문제의 조건여기서 말하는 경로는 트리의 어떤 노드에서든 시작할 수 있고 어떤 노드에서든 끝날 수 있습니다. 단, 경로는 항상 위쪽(루트 방향)에서 아래쪽(자식 방향)으로만 진행되어야 하며, 역방향 이동은 허용되지 않습니다. 또한 트리 노드의 값은 양수, 음수, 0 중 어떤 것이든 가능합니다.예제로 이해하기다음 예제를 통해 문제를 살펴보겠습니다.입력: K = 5출력:1

  2. C++로 N 이하의 모든 점핑 넘버(Jumping Number) 출력하기

    이 문제에서는 하나의 수 n이 주어지며, n보다 작거나 같은 모든 점핑 넘버를 출력해야 합니다.점핑 넘버란?점핑 넘버(Jumping Number)는 인접한 두 자릿수의 차이가 정확히 1인 수를 말합니다. 예를 들어 4565, 98, 7은 모두 점핑 넘버입니다. 한 자리 숫자는 모두 점핑 넘버로 간주되며, 반면 235처럼 인접 자릿수 차이가 1이 아닌 수는 점핑 넘버가 아닙니다.문제 이해를 위한 예시입력: N = 32출력: 0 1 2 3 4 5 6 7 8 9 10 12 21 23 32접근 방법이 문제를 해결하려면 그래프 개념을 활용할

  3. C++로 이진 트리의 모든 내부 노드 출력하기

    이 문제에서는 하나의 이진 트리가 주어지고, 그 트리의 모든 내부 노드(internal node)를 출력하는 것이 목표입니다. 이진 트리(binary tree)는 각 노드가 최대 2개의 자식 노드를 가질 수 있는 트리입니다. 즉, 어떤 노드는 자식이 전혀 없을 수도 있고, 한 개 또는 두 개의 자식을 가질 수도 있습니다. 예시 − 내부 노드(Internal Node)는 최소 한 개 이상의 자식을 가진 노드를 의미합니다. 다시 말해, 리프(leaf) 노드가 아닌 모든 노드가 내부 노드에 해당합니다. 예제를 통해 문제를 좀 더 구체

  4. C++로 두 문자열의 모든 인터리빙 문자열 출력하기

    문제 개요이 문제에서는 두 개의 문자열 str1과 str2가 주어지며, 두 문자열을 섞어 만들 수 있는 모든 인터리빙(interleaving) 문자열을 출력해야 합니다.인터리빙 문자열이란 주어진 두 문자열의 모든 문자를 사용하되, 각 문자열 내부에서 문자들의 상대적인 순서는 그대로 유지되는 문자열을 의미합니다.예제를 통해 문제를 자세히 살펴보겠습니다.입력: str1 = XY, str2 = NS 출력: XYNS, XNYS, XNSY, NXYS, NXSY, NSXY접근 방법이 문제를 해결하려면 두 문자열에 포함된 모든 문자를 활용해야

  5. C++로 두 수의 거듭제곱 합이 bound 이하인 모든 정수 구하기

    문제 개요이 문제에서는 두 개의 숫자 a와 b, 그리고 하나의 정수 bound가 주어집니다. 우리가 해야 할 일은 bound 이하의 값 중에서 a와 b의 거듭제곱의 합으로 표현할 수 있는 모든 정수를 찾아 출력하는 것입니다.수식으로 표현하면 다음 조건을 만족하는 모든 값을 구해야 합니다.bound >= ai + bj예제예제를 통해 문제를 더 쉽게 이해해 보겠습니다.입력: a = 2, b = 3, bound = 8출력: 2 3 4 5 7위 출력값은 다음과 같이 만들어집니다.2⁰ + 3⁰ = 22¹ + 3⁰ = 32⁰ + 3¹ =

  6. C++로 첫 n개의 자연수를 이용해 길이 k의 모든 증가 수열 출력하기

    이 문제에서는 두 개의 정수 K와 n이 주어지며, 첫 n개의 자연수를 사용하여 길이가 K인 모든 증가 수열을 출력하는 것이 목표입니다.증가 수열(increasing sequence)이란 다음 원소의 값이 항상 이전 원소보다 큰 숫자들의 나열을 의미합니다.예시를 통해 문제를 더 쉽게 이해해 보겠습니다.입력: n = 4, K = 2출력:1 21 31 42 32 43 4접근 방법이 문제는 백트래킹(backtracking) 기법을 활용하면 효율적으로 해결할 수 있습니다. 먼저 현재 수열을 저장할 길이 k의 배열을 하나 생성합니다. 그다음

  7. C++로 특정 범위 내의 모든 '좋은 수(Good Number)' 출력하기

    문제 개요이 문제에서는 세 개의 값 L, R, d가 주어집니다. 우리의 과제는 범위 L부터 R 사이에 있는 수 중에서 좋은 수(good number)이면서 동시에 숫자 d를 자릿수로 포함하지 않는 모든 수를 찾아 출력하는 것입니다.좋은 수란 각 자릿수가 그보다 오른쪽에 있는(즉, 더 낮은 자리의) 모든 자릿수의 합보다 큰 수를 의미합니다. 예를 들어 732는 좋은 수입니다. 7 > 3+2 이고 3 > 2이기 때문입니다.예시로 이해하기입력: L = 400, R = 500, d = 3 출력: 410, 420, 421설명: 4

  8. C++로 문장에서 '재미있는 단어(Funny Word)' 모두 찾아 출력하기

    이 문제에서는 하나의 문장이 주어지며, 우리의 목표는 그 문장 안에서 재미있는 단어(funny word)에 해당하는 모든 단어를 찾아 출력하는 것입니다.재미있는 단어란 무엇일까?재미있는 단어는 다음 조건을 만족하는 단어입니다. 문자열의 인접한 두 문자 사이의 절대 차이가, 해당 문자열을 뒤집은 문자열(reverse string)의 인접한 두 문자 사이의 절대 차이와 서로 같아야 합니다.|string[0] - string[1]| = |revstring[0] - revstring[1]|예시로 이해하기입력: string = ABRS 출력

  9. C++로 이진 트리의 모든 전체 노드(Full Node) 출력하기

    문제 개요이 문제에서는 하나의 이진 트리가 주어지며, 우리의 목표는 트리에 포함된 모든 전체 노드(Full Node)를 찾아 출력하는 것입니다.핵심 개념 정리이진 트리(Binary Tree)이진 트리는 각 노드가 최대 2개의 자식 노드를 가질 수 있는 트리 구조입니다. 즉, 노드는 자식이 없거나, 왼쪽 또는 오른쪽 자식 하나만 가지거나, 두 자식을 모두 가질 수 있습니다.전체 노드(Full Node)전체 노드란 왼쪽 자식과 오른쪽 자식을 모두 가지고 있는 노드를 의미합니다. 다시 말해, 양쪽 자식이 모두 존재하는 노드가 바로 전체

  10. C++로 이진 탐색 트리(BST)의 짝수 노드 모두 출력하는 방법

    이 문제에서는 하나의 이진 탐색 트리(Binary Search Tree)가 주어지며, 우리의 과제는 이 트리에 포함된 모든 짝수 값을 가진 노드를 출력하는 것입니다.이진 탐색 트리란?이진 탐색 트리는 다음 조건을 만족하는 이진 트리입니다.왼쪽 서브트리에는 항상 부모 노드보다 작은 값을 가진 노드들이 위치합니다.오른쪽 서브트리에는 항상 부모 노드보다 큰 값을 가진 노드들이 위치합니다.트리의 모든 노드는 위 두 규칙을 반드시 따라야 합니다.이러한 구조 덕분에 이진 탐색 트리는 값의 검색, 삽입, 삭제를 효율적으로 수행할 수 있으며, 중

  11. C++로 중복 문자가 있는 문자열의 모든 고유 순열 출력하기

    문제 개요이번 문제에서는 중복 문자가 포함될 수 있는 문자열이 주어졌을 때, 해당 문자열의 모든 고유한(distinct) 순열을 출력하는 것이 목표입니다.예시를 통해 문제를 살펴보겠습니다.입력: string = XYZ 출력: XYZ XZY YXZ YZX ZYX ZXY문자열 XYZ에는 중복 문자가 없으므로 총 3! = 6가지의 순열이 모두 고유하게 출력됩니다. 만약 AAB처럼 중복 문자가 있다면, 동일한 결과가 여러 번 출력되지 않도록 중복을 제거한 순열만 출력해야 합니다.해결 접근 방법이 문제를 효율적으로 해결하려면 다음 순열(Ne

  12. C++로 배열의 K개 요소를 더해 만들 수 있는 모든 고유한 정수 구하기

    이 문제에서는 N개의 정수로 이루어진 배열과 숫자 K가 주어집니다. 우리의 목표는 배열에서 임의의 K개 요소를 선택하여 더함으로써 만들 수 있는 모든 고유한(distinct) 숫자를 출력하는 것입니다. 단, 같은 숫자를 최대 K번까지 반복해서 선택할 수도 있습니다.문제 이해를 위한 예시예제를 통해 문제를 자세히 살펴보겠습니다.입력: array = {2, 5, 13, 9}, K = 2출력: 4, 7, 10, 11, 14, 15, 18, 22, 26설명: 두 개의 요소를 더한 경우:2+2=4, 2+5=7, 2+13=15, 2+9=11,

  13. C++로 정수 배열의 고유 요소(중복 제거 값) 출력하기

    이 문제에서는 정수 값으로 이루어진 배열이 주어지며, 배열에 포함된 모든 고유(distinct) 요소, 즉 중복을 제거한 값을 출력하는 것이 목표입니다.예시를 통해 문제를 살펴보겠습니다.입력: array = {1, 5, 7, 12, 1, 6, 10, 7, 5}출력: 1 5 7 12 6 10이 문제를 해결하려면 배열의 각 요소가 유일한 값인지 확인해야 합니다. 가장 기본적인 방법은 두 개의 중첩 반복문을 사용하는 것입니다. 바깥쪽 반복문은 각 요소를 하나씩 선택하고, 안쪽 반복문은 그 앞에 있는 요소들과 비교하여 동일한 값이 이미 등

  14. C++로 길이 M인 고유한 원형 문자열을 사전순으로 모두 출력하는 방법

    문제 개요이 문제에서는 하나의 문자열과 정수 M이 주어집니다. 우리의 목표는 이 문자열로 만들 수 있는 길이가 M인 모든 고유한 원형 문자열(circular string)을 사전순(알파벳 순서)으로 출력하는 것입니다.예시를 통해 문제를 자세히 살펴보겠습니다.입력: str = ssssn, M = 3 출력: nss  sns  ssn  sss설명: 문자열 ssssn을 원형으로 이어 붙였을 때 만들 수 있는 길이 3의 부분 문자열은 sss, sss, ssn, sns, nss 입니다. 여

  15. C++로 문자열의 고유 문자(distinct character)를 순서대로 출력하기

    이 문제에서는 하나의 문자열이 주어지며, 우리의 과제는 해당 문자열에 한 번만 등장하는 고유 문자들을 문자열에 나타난 순서 그대로 출력하는 것입니다.예시를 통해 문제를 이해해 보겠습니다.입력: tutorials Point 출력: uralsPn이 문제를 해결하는 방법은 여러 가지가 있지만, 여기서는 가장 효율적인 방법을 다룹니다. 가장 단순한 방법은 중첩 반복문을 사용하는 것이지만, 시간 복잡도가 O(n²)으로 비효율적입니다.알고리즘 접근 방식효율적인 해결을 위해 크기가 256인 두 개의 배열을 사용합니다(8비트 문자를 저장하기 위함

  16. C++로 합이 n이 되는 1, 2, 3 점수의 모든 조합 출력하기

    문제 개요이 문제에서는 총점 n이 주어집니다. 농구에서 얻을 수 있는 득점인 1점, 2점, 3점의 조합 중에서 합이 정확히 n이 되는 모든 경우를 출력해야 합니다.예시를 통해 문제를 이해해 보겠습니다.입력: 4출력:1 1 1 11 1 21 2 11 32 1 12 23 1위 예시에서 총점 4를 만들 수 있는 조합은 총 7가지입니다. 순서가 다르면 서로 다른 조합으로 간주한다는 점에 유의하세요. 예를 들어 1 1 2와 1 2 1, 2 1 1은 각각 별개의 결과로 출력됩니다.접근 방법: 재귀(Recursion) 활용이 문제는 재귀 호출을

  17. C++ 재귀 함수로 숫자의 모든 약수 조합 출력하기

    문제 개요 이 문제에서는 하나의 자연수 n이 주어지며, 우리의 과제는 n을 여러 개의 약수(factor)의 곱으로 표현할 수 있는 모든 조합을 출력하는 것입니다. 일반적으로 1과 n 자기 자신은 조합에서 제외합니다. 예제 주제를 더 쉽게 이해하기 위해 예제를 살펴보겠습니다. 입력: 24 출력: 2 2 2 3 2 2 6 2 3 4 2 12 3 8 4 6 위 결과에서 볼 수 있듯이 24는 2×2×2×3, 2×2×6, 2×3×4, 2×12, 3×8, 4×6처럼 다양한 방식으로 약수들의 곱으로 표현될 수 있습니다. 접근 방법: 재귀와 백트

  18. C++에서 균형 잡힌 괄호 쌍의 모든 조합 출력하기

    이 문제에서는 정수 n이 주어지며, 우리의 목표는 n개의 균형 잡힌 괄호 쌍으로 만들 수 있는 모든 조합을 출력하는 것입니다.균형 잡힌 괄호(balanced parentheses)란 모든 여는 괄호에 대응하는 닫는 괄호가 존재하고, 괄호들이 서로 올바르게 중첩된 형태를 의미합니다.먼저 예시를 통해 문제를 이해해 보겠습니다.입력: n = 2출력: {}{} {{}}문제 해결 접근 방식이 문제를 해결하려면 괄호 쌍의 개수를 지속적으로 추적해야 합니다. 처음에는 괄호 개수를 0으로 설정한 뒤, 전체 괄호 개수가 n보다 작은 동안 함수를 재

  19. C++로 매우 큰 숫자에서 반복되는 3자리 숫자 모두 찾아 출력하기

    이 문제에서는 하나의 매우 큰 숫자가 주어지며, 그 안에서 반복해서 나타나는 모든 3자리 숫자를 찾아 출력해야 합니다.문제 이해하기먼저 예시를 통해 문제를 살펴보겠습니다.입력: 98769876598765출력:   987: 3번   876: 3번   765: 2번위 예시에서 숫자 98769876598765 안에는 987과 876이 각각 3번, 765가 2번 등장하는 것을 확인할 수 있습니다.해결 접근 방법매우 큰 숫자는 일반적인 정수 자료형(int, lo

  20. C++에서 웨이브 패턴으로 문자열 출력하는 방법

    이 문제에서는 하나의 문자열과 정수 n이 주어집니다. 우리의 과제는 주어진 문자열을 n줄에 걸친 웨이브 패턴(wave pattern) 형태로 출력하는 것입니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다.입력: Tutorial, n = 3 출력: T         r   U    o   i   s    t &n

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:126/300  20-컴퓨터/Page Goto:1 120 121 122 123 124 125 126 127 128 129 130 131 132