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

C++

  1. C++로 행렬(Matrix)에서 최대 합을 가진 열 찾는 방법

    M × N 크기의 행렬(matrix)이 주어졌다고 가정해 봅시다. 우리의 목표는 요소들의 합계가 가장 큰 열(column)을 찾는 것입니다. 이 프로그램에서는 특별히 복잡한 기법을 사용하지 않고, 배열을 열 단위로 순회하며 각 열의 합계를 구한 뒤, 그 합이 최댓값일 경우 합계와 함께 해당 열의 인덱스를 출력하는 방식으로 문제를 해결합니다. 알고리즘 프로그램의 동작 과정은 다음과 같습니다.1. 각 열마다 colSum() 함수를 호출하여 해당 열의 모든 요소 합계를 계산합니다.2. 계산된 합계를 현재까지의 최댓값(maxSum)과 비교

  2. C++로 행렬의 두 대각선 합 차이 구하기

    이 글에서는 주어진 행렬에서 두 대각선의 합 사이의 차이를 구하는 방법을 알아보겠습니다. N x N 크기의 정방행렬이 있을 때, 주 대각선(왼쪽 위 → 오른쪽 아래)과 부 대각선(오른쪽 위 → 왼쪽 아래)의 각 합을 계산한 후, 두 값의 차이(절댓값)를 구하면 됩니다.대각선 요소에 접근하는 방법주 대각선(primary diagonal)의 경우, 행 인덱스와 열 인덱스가 동시에 증가합니다. 따라서 matrix[i][i] 형태로 간단하게 접근할 수 있습니다.반면 부 대각선(secondary diagonal)은 다음 공식을 이용해 접근합

  3. C++로 정렬되지 않은 배열에서 Floor와 Ceiling 값 찾는 방법

    이번 글에서는 정렬되지 않은 배열(unsorted array)에서 floor(바닥값)와 ceiling(천장값)을 찾는 방법을 알아보겠습니다.먼저 두 개념을 간단히 정리하면 다음과 같습니다.Floor 값: x보다 작거나 같은 요소 중에서 가장 큰 값Ceiling 값: x보다 큰 값 중에서 가장 작은 값예를 들어 배열 A = [5, 6, 8, 9, 6, 5, 5, 6]이 있고 x가 7이라고 가정해 봅시다. 이때 floor 값은 6이 되고, ceiling 값은 8이 됩니다.접근 방법: 선형 탐색 (Linear Search)이 문제는 선형

  4. C++로 산술 평균과 기하 평균을 이용해 조화 평균 구하기

    이 글에서는 산술 평균(Arithmetic Mean)과 기하 평균(Geometric Mean)을 이용하여 조화 평균(Harmonic Mean)을 구하는 방법을 알아봅니다.세 가지 평균의 기본 공식은 다음과 같습니다.산술 평균(AM) : (a + b) / 2기하 평균(GM) : √(a × b)조화 평균(HM) : 2ab / (a + b)조화 평균 공식 유도조화 평균은 산술 평균과 기하 평균의 관계를 통해 다음과 같이 표현할 수 있습니다.HM = GM² / AM즉, 두 수에 대해 기하 평균의 제곱을 산술 평균으로 나누면 조화 평균을 얻

  5. C++로 특정 숫자가 주어진 첫 항과 공차를 가진 등차수열(AP)에 속하는지 확인하는 방법

    등차수열(AP)이란?등차수열(Arithmetic Progression, AP)은 연속된 두 항의 차이가 일정한 수열입니다. 첫 항 a와 공차(차이) d가 주어지면 수열의 모든 항은 다음과 같은 일반항으로 표현할 수 있습니다.x = a + n × d (n은 0 이상의 정수)예를 들어 첫 항 a = 1, 공차 d = 3이라면 수열은 1, 4, 7, 10, ... 형태가 됩니다. 이때 x = 7이 이 수열에 포함되는지 확인하면, 7 = 1 + 2 × 3이므로 답은 예입니다.문제 해결 접근 방법주어진 숫자 x가 해당 등차수열의 항인지 확인

  6. C++로 두 직사각형의 겹침 여부 확인하기

    직사각형은 일반적으로 두 개의 좌표, 즉 왼쪽 위 꼭짓점(top-left)과 오른쪽 아래 꼭짓점(bottom-right)만으로 표현할 수 있습니다. 이번 글에서는 두 개의 직사각형이 주어졌을 때, 이들이 서로 겹치는지(overlap) 판별하는 방법을 알아보겠습니다.문제 정의두 직사각형은 각각 두 개의 좌표 쌍 (l1, r1)과 (l2, r2)로 주어집니다.l1: 첫 번째 직사각형의 왼쪽 위 꼭짓점r1: 첫 번째 직사각형의 오른쪽 아래 꼭짓점l2: 두 번째 직사각형의 왼쪽 위 꼭짓점r2: 두 번째 직사각형의 오른쪽 아래 꼭짓점여기서는

  7. C++로 숫자의 가장 큰 소인수(최대 소인수) 구하기

    문제 개요어떤 수 x가 주어졌을 때, x의 가장 큰 소인수(largest prime factor)를 구하는 것이 목표입니다. 예를 들어 x = 6이라면 소인수는 2와 3이므로 가장 큰 소인수는 3입니다.이 문제는 수를 작은 약수부터 차례대로 나누어 소인수분해하면서, 지금까지 발견한 소인수 중 최댓값을 계속 추적하는 방식으로 간단하게 해결할 수 있습니다.알고리즘 동작 방식n이 2로 나누어떨어지는 동안 계속 2로 나누고, 최대 소인수(maxPF)를 2로 갱신합니다.3부터 √n까지의 홀수에 대해서만 검사합니다. 짝수 인수는 이미 앞 단계

  8. C++로 N 팩토리얼 합의 마지막 두 자리 숫자 구하기

    이 글에서는 1!부터 N!까지의 계승(팩토리얼) 합에서 일의 자리와 십의 자리, 즉 마지막 두 자리 숫자를 구하는 방법을 알아봅니다.예를 들어 N = 4라고 가정해 보겠습니다. 그러면 1! + 2! + 3! + 4! = 1 + 2 + 6 + 24 = 33이 되고, 따라서 결과는 33입니다.핵심 아이디어: 규칙성 찾기계승 값을 자세히 관찰하면 중요한 규칙을 발견할 수 있습니다.N > 5인 모든 수의 계승은 항상 일의 자리가 0입니다. 따라서 5! 이후의 항들은 일의 자리에 더 이상 영향을 주지 않습니다.N ≥ 10인 모든 수의

  9. C++ 구조체 배열에서 최댓값 찾는 방법 완벽 정리

    이 글에서는 C++에서 구조체(struct) 배열 안에서 최댓값을 찾는 방법을 알아보겠습니다. 예를 들어 아래와 같은 구조체가 주어졌다고 가정해 봅시다.struct Height{   int feet, inch;};이 구조체 타입의 배열이 있을 때, 그중 가장 큰 요소를 찾아야 합니다.핵심 아이디어접근 방식은 매우 간단합니다. 배열을 처음부터 끝까지 순회하면서, 각 요소의 값을 인치(inch) 단위로 환산한 값과 비교합니다. 이때 환산 공식은 다음과 같습니다.총 인치 = 12 × feet + inch순회하면

  10. C++로 숫자의 인수 합 최솟값 구하기

    개요이 글에서는 주어진 숫자의 인수(약수) 합 중 최솟값을 구하는 방법을 알아봅니다. 예를 들어 숫자가 12라면, 다음과 같이 여러 가지 방식으로 인수분해할 수 있습니다.12 = 12 × 1 (12 + 1 = 13)12 = 2 × 6 (2 + 6 = 8)12 = 3 × 4 (3 + 4 = 7)12 = 2 × 2 × 3 (2 + 2 + 3 = 7)이 경우 최소 합은 7입니다. 숫자를 입력받아 인수의 최소 합을 구하는 프로그램을 만들어 보겠습니다. 인수 합을 최소화하려면 숫자를 가능한 한 잘게 쪼개야 합니다. 다시 말해, 소인수분해를

  11. C++로 두 수 A와 B 사이의 N개 산술 평균(등차중항) 구하기

    세 개의 정수 A, B, N이 주어졌을 때, A와 B 사이에 존재하는 N개의 산술 평균(등차중항)을 구하는 문제입니다.예를 들어 A = 20, B = 32, N = 5라면, 출력 결과는 22, 24, 26, 28, 30이 됩니다.문제 접근 방법이 작업은 본질적으로 간단합니다. A를 첫째 항으로, B를 마지막 항으로 하는 등차수열의 중간에 N개의 항을 삽입하면 됩니다. 삽입되는 산술 평균들을 A₁, A₂, …, Aₙ이라고 하면 전체 수열은 다음과 같은 형태가 됩니다.A, A₁, A₂, …, Aₙ, B여기서 B는 이 수열의 (N + 2

  12. C++로 두 정수 A와 B 사이의 N개 기하 평균 구하기

    세 개의 정수 A, B, N이 주어졌을 때, A와 B 사이에 존재하는 N개의 기하 평균(등비 중항)을 구하는 것이 목표입니다. 예를 들어 A = 2, B = 32, N = 3이라면 출력 결과는 4, 8, 16이 됩니다.문제 접근 방법이 문제는 생각보다 간단합니다. A를 첫째 항으로, B를 마지막 항으로 하는 등비수열에 N개의 항을 삽입하면 됩니다. G1, G2, …, Gn을 n개의 기하 평균이라고 하면 전체 수열은 다음과 같이 표현됩니다.A, G1, G2, …, Gn, B여기서 B는 이 수열의 (N + 2)번째 항에 해당합니다. 따

  13. C++에서 길이 L인 문자열의 매직 쌍 개수 구하기

    문제 개요두 문자열 str1과 str2가 주어졌을 때, 길이가 L인 매직 쌍(magical pair)의 개수를 구하는 문제입니다. 모든 인덱스 i에 대해 str1[i] < str2[i]를 만족할 때 두 문자열은 매직 관계에 있다고 정의합니다. 쌍의 개수는 문자열 길이가 길어질수록 기하급수적으로 커지기 때문에, 최종 답은 10⁹(1,000,000,000)으로 나눈 나머지로 반환해야 합니다. 문자열에는 소문자 알파벳만 포함된다고 가정합니다.풀이 접근 방법핵심 아이디어는 간단한 수학적 규칙을 찾는 것입니다. 먼저 길이 L = 1인

  14. C++로 배열에서 XOR 값이 0이 되는 쌍의 개수 구하기

    n개의 요소로 이루어진 배열이 주어졌을 때, XOR 연산의 결과가 0이 되는 쌍(pair)의 개수를 구하는 문제입니다.XOR의 성질을 생각해 보면, 쌍 (x, y)의 XOR 결과가 0이 되려면 x와 y가 반드시 같은 값이어야 합니다. 예를 들어 5 ⊕ 5 = 0이지만, 서로 다른 두 수의 XOR이 0이 되는 경우는 없습니다. 따라서 이 문제는 결국 “배열에서 값이 서로 같은 두 요소로 몇 개의 쌍을 만들 수 있는가?”를 묻는 것과 같습니다.접근 방법가장 효율적인 해결 방법은 배열을 먼저 정렬하는 것입니다. 정렬을 하면 같은 값들이

  15. C++로 두 문자열 사이의 추가 문자 찾기: 해시 테이블 활용법

    두 개의 문자열 S와 T가 있다고 가정해 봅시다. S의 길이는 n이고, T의 길이는 n + 1입니다. 문자열 T에는 S에 포함된 모든 문자가 들어 있으며, 여기에 하나의 추가 문자가 더 포함되어 있습니다. 이번 글에서는 이 추가 문자를 효율적인 방법으로 찾아보겠습니다.문제 해결 접근 방식가장 효율적인 방법은 해시 테이블(Hash Table)을 활용하는 것입니다. 알고리즘의 동작 과정은 다음과 같습니다.먼저 비어 있는 해시 테이블을 하나 생성합니다. 그다음 두 번째 문자열 T의 모든 문자를 해시 테이블에 삽입하면서 각 문자의 등장 횟

  16. C++로 암호화된 배열(자기 자신을 제외한 요소들의 합)에서 원본 배열 복원하기

    정수로 이루어진 암호화된 배열이 하나 주어져 있다고 가정해 보겠습니다. 예를 들어 암호화된 배열이 A = [10, 14, 12, 13, 11]이고, 원본 배열이 B = [5, 1, 3, 2, 4]라고 합시다. 이때 암호화 배열의 각 인덱스 i에 해당하는 값은 다음 규칙을 따릅니다.A[i] = 원본 배열 B에서 i번째 요소를 제외한 나머지 모든 요소의 합 (단, i ≠ j인 모든 j에 대해 B[j]의 합)즉, 각 위치의 값은 자기 자신을 빼고 계산된 합이므로, 우리의 목표는 이 암호화된 배열만 보고 원본 배열을 되찾아내는 것입니다.핵

  17. C++를 활용해 숫자의 짝수 소인수 합 구하기

    이 글에서는 주어진 숫자의 모든 짝수 소인수(짝수인 소수 인수)의 합을 효율적으로 구하는 방법을 알아보겠습니다. 예를 들어 n = 480이라는 숫자가 있다고 가정해 봅시다. 480의 소인수는 2, 2, 2, 2, 2, 3, 5입니다. 이 중 짝수인 소인수는 2뿐이며, 총 다섯 번 등장하므로 짝수 소인수의 합은 2+2+2+2+2 = 10이 됩니다.이 문제를 해결하려면 다음 규칙만 기억하면 됩니다.숫자가 2로 나누어 떨어지는 동안, 합계에 2를 더하고 숫자를 계속 2로 나눕니다.이 과정이 끝나면 남은 숫자는 반드시 홀수입니다. 홀수에는

  18. C++로 숫자의 홀수 소인수 합 구하기

    이 글에서는 하나의 숫자에 대한 모든 홀수 소인수의 합을 효율적으로 구하는 방법을 살펴보겠습니다. 예를 들어 n = 1092라고 할 때, 이 수의 소인수는 2, 2, 3, 7, 13입니다. 이 중 홀수인 인수들만 골라 더하면 3 + 7 + 13 = 23이 됩니다.이 문제를 해결하려면 다음과 같은 규칙을 따르면 됩니다.숫자가 2로 나누어 떨어지면 해당 인수는 무시하고, 숫자가 더 이상 2로 나누어지지 않을 때까지 계속 2로 나눕니다.이 시점에서 숫자는 반드시 홀수입니다. 3부터 숫자의 제곱근까지 2씩 증가시키며 반복하고, 현재 값으로

  19. PL/SQL로 숫자의 계승(팩토리얼) 구하는 방법

    이 글에서는 PL/SQL을 사용하여 숫자의 계승(팩토리얼, Factorial)을 구하는 방법을 알아봅니다. PL/SQL 코드에서는 서로 관련된 선언문들을 하나의 블록으로 묶고, 그 안에 여러 명령어들이 그룹 형태로 배치되어 실행됩니다.계승(Factorial)이란?어떤 수의 계승이란 1부터 해당 수 n까지의 모든 정수를 차례대로 곱한 값을 의미합니다. 수식으로 표현하면 다음과 같습니다.n! = n × (n − 1) × (n − 2) × … × 2 × 1예를 들어 5의 계승은 5! = 5 × 4 × 3 × 2 × 1 = 120이 됩니다

  20. C++로 문자열에서 처음 반복되는 문자 찾는 방법

    문자열이 주어졌을 때, 가장 먼저 반복해서 등장하는 문자를 찾아야 하는 경우가 있습니다. 예를 들어 Hello Friends라는 문자열에는 l이 연달아 두 번 나타나므로, 첫 번째 반복 문자는 l입니다.이 문제는 해싱(hashing) 기법을 활용하면 효율적으로 해결할 수 있습니다. 해시 테이블 역할을 하는 unordered_set을 하나 생성한 뒤, 문자열의 각 문자를 왼쪽부터 차례대로 검사합니다. 해당 문자가 아직 집합에 없다면 삽입하고, 이미 존재한다면 그 문자가 곧 첫 번째 반복 문자이므로 즉시 반환하면 됩니다.이 방식은 문자

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:88/300  20-컴퓨터/Page Goto:1 82 83 84 85 86 87 88 89 90 91 92 93 94