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

C++

  1. C++로 배열 속 숨겨진 숫자(Hidden Number) 찾기

    문제 소개이 문제에서는 n개의 정수로 구성된 배열 arr[]이 주어지며, 우리의 목표는 C++로 배열 속 숨겨진 숫자(Hidden Number)를 찾는 프로그램을 작성하는 것입니다.숨겨진 숫자란?배열에서 숨겨진 숫자란, 배열의 모든 요소에서 이 숫자를 뺀 결과값들의 합이 0이 되는 수를 의미합니다.예제로 문제 이해하기입력arr[] = {4, 1, 6, 7, 2}출력4배열의 모든 요소에서 4를 뺀 뒤 그 값을 모두 더해 보면 다음과 같습니다.= (1 - 4) + (6 - 4) + (7 - 4) + (2 - 4) = -3 + 2 + 3

  2. C++로 정다각형의 내각과 외각 구하는 프로그램 작성하기

    이번 문제에서는 정다각형의 변의 개수를 나타내는 숫자 n이 주어집니다. 우리의 과제는 이 값을 이용해 C++로 정다각형의 내각과 외각을 구하는 프로그램을 작성하는 것입니다.문제 설명주어진 변의 개수 n에 대해, 해당 정다각형을 이루는 각각의 내각과 외각의 크기를 계산해야 합니다.내각(Interior Angle): 다각형의 두 인접한 변 사이에서 다각형 내부에 형성되는 각도입니다.외각(Exterior Angle): 다각형의 두 인접한 변 사이에서 다각형 외부에 형성되는 각도입니다.예시로 이해하기입력n = 5출력Interior Angl

  3. C++로 이름 이니셜 자동 추출하기: 단계별 구현 가이드

    이 프로그램에서는 한 사람의 이름을 나타내는 문자열 name이 주어집니다. 우리의 목표는 C++을 사용하여 이름의 이니셜(첫 글자)을 찾아내는 프로그램을 작성하는 것입니다.문제 설명주어진 문자열 형태의 이름에서 각 단어의 첫 글자, 즉 이니셜을 추출하여 출력해야 합니다.예제로 문제 이해하기입력name = ram kisan saraswat출력R K S설명이름을 구성하는 각 단어의 첫 번째 문자를 찾아 대문자로 변환하면 됩니다. ram의 R, kisan의 K, saraswat의 S가 이니셜이 됩니다.해결 접근 방법이 문제의 가장 간단한

  4. C++ BFS와 비트마스크로 모든 키를 모으는 최단 경로 구현하기

    문제 소개 격자(grid) 위에서 이동하며 모든 키를 수집하는 최단 경로를 찾는 문제입니다. 격자를 구성하는 기호는 다음과 같습니다. . — 빈 칸 # — 벽(지나갈 수 없음) @ — 시작 지점 a, b, ... — 키 A, B, ... — 자물쇠 시작 지점에서 출발해 한 번에 상·하·좌·우 네 방향으로 한 칸씩 이동할 수 있습니다. 격자 밖으로 나갈 수 없으며, 벽은 통과할 수 없습니다. 키가 놓인 칸을 지나가면 그 키를 자동으로 주워 담게 되고, 자물쇠가 있는 칸은 대응하는 키(자물쇠 A ↔ 키 a)를 이미 가지고 있을 때만

  5. C++로 문자열 복호화 후 k번째 문자 찾는 방법

    이 튜토리얼에서는 암호화된 문자열을 복호화한 후 k번째 문자를 찾는 프로그램을 C++로 구현하는 방법을 알아보겠습니다.문제 정의알파벳 문자와 숫자가 섞여 있는 문자열과 정수 K가 주어집니다. 여기서 숫자는 바로 앞에 있는 문자(들)가 반복되는 횟수를 의미합니다. 예를 들어 ab2c3은 복호화하면 ab가 2번, c가 3번 반복되어 ababccc가 됩니다.우리의 목표는 실제로 전체 문자열을 펼쳐 만들지 않고도, 복호화된 문자열에서 K번째 위치에 해당하는 문자를 효율적으로 찾아내는 것입니다.접근 방식전체 복호화 문자열을 메모리에 생성하면

  6. C++로 문자열에서 가장 큰 ASCII 값의 문자 찾는 방법

    이 문제에서는 하나의 문자열이 주어지며, 우리의 과제는 C++에서 문자열 내에 있는 문자들 중 가장 큰 ASCII 값과 가장 작은 ASCII 값을 가진 문자를 찾는 프로그램을 작성하는 것입니다.문제 설명여기서 다루는 문자열에는 대문자와 소문자가 모두 포함되어 있습니다. 이 문자열에서 ASCII 값이 가장 큰 문자와 가장 작은 문자를 각각 찾아야 합니다.입력 예시str = TutorialsPoint출력 예시Largest = u Smallest = P문제 풀이 접근법ASCII 값의 특성을 이해하면 문제를 쉽게 해결할 수 있습니다. AS

  7. C++ 삼항 연산자로 최댓값 찾기: 2개, 3개, 4개 숫자 비교 프로그램

    이 문제에서는 여러 개의 숫자가 주어지며, C++의 삼항 연산자(ternary operator)를 사용해 가장 큰 수를 찾는 프로그램을 작성하는 것이 목표입니다.주어지는 숫자의 개수는 다음과 같이 세 가지 경우로 나눌 수 있습니다.두 개의 숫자세 개의 숫자네 개의 숫자문제 설명 — 두 개, 세 개 또는 네 개의 숫자가 주어졌을 때, if문 대신 삼항 연산자만을 활용하여 그중 최댓값을 구해야 합니다.예시를 통해 문제를 이해해 보겠습니다.두 개의 숫자입력 — 4, 54출력 — 54세 개의 숫자입력 — 14, 40, 26출력 — 40네

  8. C++로 푸는 시퀀스 스탬핑(Sequence Stamping) 문제 풀이

    문제 설명소문자로 이루어진 목표(target) 문자열을 만들어야 한다고 가정해 보겠습니다.처음 상태는 물음표(?)가 n개 나열된 시퀀스입니다(여기서 n은 목표 문자열의 길이입니다). 여기에 더해, 소문자로 구성된 하나의 스탬프(stamp)가 주어집니다.매 턴마다 시퀀스 위에 스탬프를 찍어 해당 구간의 문자들을 스탬프의 문자로 교체할 수 있으며, 최대 10 × n턴까지 진행할 수 있습니다. 예를 들어 초기 시퀀스가 ?????이고 스탬프가 abc라면, 첫 턴에 abc??, ?abc?, ??abc와 같은 문자열을 만들 수 있습니다.목표

  9. C++에서 조건 연산자와 비트 연산자 없이 4개 숫자 중 최댓값 구하기

    문제 개요이 문제에서는 네 개의 정수가 주어집니다. 목표는 C++에서 조건 연산자(if-else, 삼항 연산자 등)나 비트 연산자를 일절 사용하지 않고 네 숫자 중 최댓값을 찾는 프로그램을 작성하는 것입니다.코드 설명네 개의 정수 값이 주어졌을 때, 조건 분기나 비트 조작 없이 오직 산술 연산만으로 이 숫자들 사이의 최댓값을 구해야 합니다. 먼저 예제를 통해 문제를 이해해 보겠습니다.입력a = 4, b = 7, c = 1, d = 9출력9해결 접근 방식핵심 아이디어는 두 숫자씩 짝지어 비교하면서 더 큰 값을 골라내는 것입니다. 각

  10. C++로 2차원 행렬의 최댓값 찾기: 초보자를 위한 단계별 가이드

    이 글에서는 n×m 크기의 2차원 행렬이 주어졌을 때, C++ 프로그래밍으로 행렬 내 최대 요소(최댓값)를 찾는 방법을 알아보겠습니다.문제 설명주어진 행렬에서 가장 큰 값을 가진 요소를 찾아 반환하는 것이 목표입니다. 별도의 복잡한 조건 없이 단순히 행렬 전체를 탐색하여 최댓값을 구하는 기본적인 문제입니다.예제로 문제 이해하기입력mat[3][3] = {{4, 1, 6}, {5, 2, 9}, {7, 3, 0}}출력9위 예제에서 행렬의 모든 요소 중 가장 큰 값은 9이므로 출력 결과는 9가 됩니다.해결 접근 방법이 문제의 해결 방법은

  11. C++로 서로 다른 두 숫자의 인덱스 간 최대 차이 찾기

    이번 문제에서는 n개의 정수로 구성된 배열 arr[]가 주어지며, C++로 서로 다른 두 숫자의 인덱스 간 최대 차이를 찾는 프로그램을 작성하는 것이 목표입니다. 문제 설명 배열에 있는 정수값들의 인덱스 차이 중에서 최댓값을 구해야 하며, 단, 비교 대상이 되는 두 정수는 서로 다른 값이어야 한다는 조건이 있습니다. 값이 같은 요소끼리의 인덱스 차이는 계산에서 제외됩니다. 예시로 이해하기 입력 arr[] = {4, 1, 3, 2, 1, 2, 4} 출력 5 설명 인덱스 0의 요소 4와 인덱스 5의 요소 2는 서로 다른 값이며, 두

  12. C++로 풀어보는 이진 트리 카메라 배치 문제: 최소 카메라 개수 구하기

    문제 개요이진 트리가 하나 주어지고, 우리는 트리의 노드들에 카메라를 설치하려고 합니다. 특정 노드에 설치된 카메라는 자기 자신, 부모 노드, 그리고 직계 자식 노드를 감시할 수 있습니다. 이때 트리의 모든 노드를 감시하기 위해 필요한 최소 카메라 개수를 구하는 것이 목표입니다.예를 들어 입력이 다음과 같다면 −출력은 1이 됩니다. 카메라 한 대만으로도 트리의 모든 노드를 감시할 수 있기 때문입니다.해결 접근 방법: 그리디 + 후위 순회이 문제는 그리디(Greedy) 전략과 후위 순회(Post-order Traversal

  13. C++로 선분의 중점(Midpoint) 구하기: 개념부터 코드까지

    이 문제에서는 한 선분의 시작점 A와 끝점 B가 주어지며, C++을 이용해 이 선분의 중점(midpoint)을 구하는 프로그램을 작성하는 것이 목표입니다.문제 설명시작점과 끝점이 각각 A(x1, y1), B(x2, y2)로 주어진 선분이 있고, 우리는 이 선분의 중점을 찾아야 합니다.예제로 문제 이해하기입력:a(x1, y1) = (4, -5) b(x2, y2) = (-2, 6)출력:(1, 0.5)설명:x좌표의 중점 = (x1 + x2) / 2 = (4 + (-2)) / 2 = 1 y좌표의 중점 = (y1 + y2) / 2 = (-5

  14. C++ 배열에서 최솟값과 최댓값을 찾는 방법 총정리

    이 문제에서는 n개의 정수로 이루어진 배열 arr[]가 주어지며, C++을 사용해 배열 내 최솟값과 최댓값을 찾는 프로그램을 작성하는 것이 목표입니다.문제 설명n개의 정수 값을 담고 있는 배열 arr[]가 주어졌을 때, 배열에 포함된 모든 값 중에서 가장 큰 값(최댓값)과 가장 작은 값(최솟값)을 구해야 합니다.예제로 문제 이해하기입력arr[] = {2, 1, 6, 9, 4, 10, 15, 21}출력max = 21 , min = 1해결 접근 방법이 문제는 여러 가지 방법으로 해결할 수 있습니다. 가장 기본적인 방법은 배열의 요소들을

  15. C++로 풀어보는 홀수·짝수 점프(Odd Even Jumps) 문제

    문제 개요배열 A가 주어져 있다고 가정해 봅시다. 어떤 시작 인덱스에서 출발하여 일련의 점프를 수행할 수 있으며, 이때 1번째, 3번째, 5번째... 점프를 홀수 번째 점프, 2번째, 4번째, 6번째... 점프를 짝수 번째 점프라고 부릅니다.인덱스 i에서 앞쪽 인덱스 j(i < j)로 점프하는 규칙은 다음과 같습니다.홀수 번째 점프: A[i] <= A[j]를 만족하면서 A[j]가 가능한 한 가장 작은 값이 되는 인덱스 j로 점프합니다. 후보 인덱스가 여러 개라면 그중 가장 작은 인덱스로만 이동할 수 있습니다.짝수 번째 점

  16. C++로 풀어보는 고유 경로 III(Unique Paths III) — DFS 백트래킹 풀이

    문제 소개 2차원 격자가 하나 주어져 있고, 각 칸은 다음 네 가지 유형 중 하나입니다. 1 : 시작 지점 — 격자 안에 정확히 하나만 존재합니다. 2 : 도착 지점 — 역시 정확히 하나만 존재합니다. 0 : 자유롭게 걸어 다닐 수 있는 빈 칸입니다. -1 : 지나갈 수 없는 장애물입니다. 목표는 시작 지점에서 도착 지점까지, 장애물이 아닌 모든 칸을 정확히 한 번씩만 밟으면서 상하좌우 네 방향으로만 이동하는 경로의 개수를 구하는 것입니다. 예시 입력 1000 0000 002-1 이 경우 정답은 2입니다. 가능한 두 경로

  17. C++로 전위 순회 문자열에서 이진 트리 복구하기

    이진 트리가 하나 있다고 가정해 보겠습니다. 우리는 루트 노드에서 시작하여 전위(preorder) 깊이 우선 탐색(DFS)을 수행합니다.탐색 과정에서 각 노드를 방문할 때마다 해당 노드의 깊이(D)만큼 대시(-)를 출력한 뒤, 그 다음에 노드의 값을 출력합니다. 노드의 깊이가 D라면 그 직계 자식의 깊이는 D+1이 되고, 루트 노드의 깊이는 0입니다.또 한 가지 중요한 조건이 있습니다. 어떤 노드에 자식이 하나만 있다면, 그 자식은 반드시 왼쪽 자식이라는 점입니다. 따라서 위 규칙에 따라 생성된 탐색 결과 문자열 S가 주어졌을 때,

  18. C++ 비트마스크로 각 퍼즐에 유효한 단어 개수 구하기

    문제 정의퍼즐(puzzle) 문자열이 하나 주어져 있을 때, 어떤 단어(word)가 유효(valid)하려면 다음 두 조건을 모두 만족해야 합니다.단어에는 반드시 퍼즐의 첫 번째 글자가 포함되어야 합니다.단어를 구성하는 모든 글자가 퍼즐 안에 존재해야 합니다.예를 들어 퍼즐이 abcdefg라고 가정해 보겠습니다. 이때 face, cabbage 같은 단어는 유효합니다. 반면 beefed는 a가 없어서, based는 퍼즐에 없는 s가 포함되어 있어서 유효하지 않습니다.우리가 구해야 하는 것은 답 목록입니다. 여기서 answer[i]는 i

  19. C++로 풀기: 정확히 steps번 이동 후 같은 위치에 머무르는 경우의 수

    문제 설명arrLen 크기의 배열이 하나 있고, 그 배열의 인덱스 0 위치에 포인터가 있다고 가정해 봅시다. 각 단계(step)마다 우리는 배열에서 왼쪽으로 한 칸 이동하거나, 오른쪽으로 한 칸 이동하거나, 현재 위치에 그대로 머무를 수 있습니다.이제 두 개의 정수 steps와 arrLen이 주어졌을 때, 정확히 steps번의 이동을 마친 후에도 포인터가 인덱스 0에 머물러 있도록 하는 이동 방법의 수를 구해야 합니다. 만약 답이 너무 크다면 10^9 + 7로 나눈 나머지를 반환하면 됩니다.예를 들어, steps = 3, arrLe

  20. C++로 해결하는 최소 낙하 경로 합 II (Minimum Falling Path Sum II)

    문제 설명정사각형 격자 형태의 배열 arr가 주어집니다. 비영 이동(non-zero shift) 낙하 경로란 각 행에서 정확히 하나의 원소를 선택하되, 인접한 두 행에서 선택한 원소가 같은 열에 위치하지 않도록 하는 경로를 의미합니다. 이 조건을 만족하는 모든 낙하 경로 중에서 원소들의 합이 가장 작은 값을 찾는 것이 이번 문제의 목표입니다.예시로 이해하기입력이 [[1,2,3],[4,5,6],[7,8,9]]인 경우를 살펴보겠습니다. 만들 수 있는 낙하 경로는 [1,5,9], [1,5,7], [1,6,7], [1,6,8], [2,4,

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:184/300  20-컴퓨터/Page Goto:1 178 179 180 181 182 183 184 185 186 187 188 189 190