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

C++

  1. C++로 구현하는 3D 공간에서 두 평면 사이의 각도 계산법

    3D 공간에서 두 평면 사이의 각도를 구하는 방법을 배우기 전에, 먼저 평면과 각도라는 기본 개념부터 짚고 넘어가겠습니다.기본 개념평면(Plane)은 무한히 뻗어 있는 2차원 표면을 의미합니다.각도(Angle)는 한 점에서 서로 교차하는 두 직선 또는 두 표면 사이가 이루는 도(degree) 단위의 공간을 말합니다.따라서 이 문제에서는 3D 공간에서 서로 교차하는 두 평면이 이루는 각도를 구해야 합니다. 즉, 서로 만나는 두 평면이 교차하는 지점에서 형성되는 각도를 찾는 것이 목표입니다.두 평면 사이의 각도 구하는 원리두 3D 평면

  2. C++ 프로그램으로 세 변이 주어진 삼각형의 외접원 넓이 구하기

    삼각형의 세 변의 길이가 주어졌을 때, 해당 삼각형의 외접원(circumcircle) 넓이를 C++ 프로그램으로 구하는 방법을 알아보겠습니다. 그 전에 문제 해결에 필요한 기본 개념부터 짚고 넘어가겠습니다.기본 개념 정리삼각형(Triangle)세 개의 변으로 이루어진 닫힌 도형입니다.원(Circle)변이 없거나 무수히 많은 변을 가진 것으로 볼 수 있는 닫힌 곡선 도형입니다.외접원(Circumcircle)다른 도형을 내부에 포함하는 바깥쪽의 원을 의미합니다. 삼각형의 외접원은 세 꼭짓점을 모두 지나며, 삼각형 전체를 그 안에 담고

  3. C++로 구현하는 정육각형에 내접하는 가장 큰 삼각형의 넓이 계산법

    정육각형에 내접하는 가장 큰 삼각형의 넓이를 구하려면, 먼저 두 도형의 개념과 한 도형이 다른 도형 안에 어떻게 내접하는지 이해해야 합니다.기본 개념삼각형(Triangle)은 세 변으로 이루어진 닫힌 도형으로, 세 변의 길이는 같을 수도 있고 다를 수도 있습니다.육각형(Hexagon)은 여섯 변으로 이루어진 닫힌 도형으로, 마찬가지로 각 변의 길이는 같을 수도 있고 다를 수도 있습니다.내접 삼각형의 조건육각형에 내접한 삼각형은 세 꼭짓점이 모두 육각형의 꼭짓점에 닿아야 합니다. 따라서 삼각형의 세 변은 정육각형의 대각선으로 볼 수

  4. C/C++로 시스템 종료 프로그램 작성하기

    시스템을 종료하는 프로그램은 Windows, Linux, macOS 등 다양한 운영체제에서 동작하며, 컴퓨터의 전원을 끄고 열려 있는 모든 응용 프로그램을 닫는 역할을 합니다.종료(Shut down)와 전원 끄기(Power off)란 무엇일까?컴퓨터를 종료 또는 전원 끄기한다는 것은, 정해진 절차에 따라 컴퓨터의 주요 부품에 공급되는 전원을 차단하고, 컴퓨터가 수행 중인 모든 작업, 즉 모든 응용 프로그램과 프로세스를 끝내는 것을 의미합니다. 컴퓨터가 종료되면 CPU, RAM 모듈, 하드 디스크 드라이브 같은 주요 부품의 전원이 꺼

  5. C++ 합 배열(Sum Array) 퍼즐: 개념 이해부터 최적화 코드 구현까지

    배열(Array)은 동일한 자료형의 여러 요소를 하나로 묶어 저장하는 자료구조입니다. 여러 값을 한 번에 저장할 수 있다는 장점이 있지만, 사용하기 전에 배열의 길이를 미리 정해야 한다는 특징이 있습니다. 합 배열 퍼즐이란? 합 배열 퍼즐에서는 크기가 n으로 고정된 배열 A1이 주어집니다. 이 문제를 해결하기 위해 S1이라는 새로운 배열을 만들어야 하는데, S1의 각 위치에는 해당 위치의 원소 하나만 제외한 나머지 모든 원소들의 합을 저장합니다. 예를 들어 S1[3]을 계산한다면, 인덱스 3에 해당하는 원소를 제외한 나머지 원소들

  6. C/C++ abs(), labs(), llabs() 함수 완벽 가이드

    C 표준 라이브러리의 정수 절댓값 함수란?C/C++ 표준 라이브러리에는 정수형 값의 절댓값을 계산하는 함수들이 있습니다. 이 함수들은 음수 기호를 제거한 순수한 수치 값을 반환하며, 입력받은 정수 타입에 따라 abs(), labs(), llabs() 세 가지 버전으로 나뉩니다.세 함수의 원형은 다음과 같습니다.int = abs(int n); long = labs(long n); long long = llabs(long long n);여기서 n은 절댓값을 구하고자 하는 정수 값입니다.이 세 함수는 모두 C++

  7. C++로 배열 요소의 최소 절대 차이 합계 구하기

    이 글에서는 C++를 이용해 배열의 각 요소가 다른 요소들과 가질 수 있는 최소 절대 차이를 구하고, 그 값들을 모두 더한 합계를 계산하는 방법을 알아봅니다. 본격적으로 살펴보기에 앞서, 이해에 필요한 기본 개념부터 간단히 짚고 넘어가겠습니다. 기본 개념 배열(Array) 배열은 같은 자료형의 요소들을 연속된 메모리 공간에 저장하는 자료구조입니다. C++에서 배열은 선언 시점에 크기를 미리 정해야 한다는 특징이 있습니다. 절대 차이(Absolute Difference) 절대 차이는 두 수의 차이에 절댓값을 취한 값입니다. 즉, 두

  8. C++에서 소수 빈도를 가진 배열 요소 찾는 방법

    개요배열(Array)은 동일한 데이터 타입의 요소들을 담는 컨테이너 자료구조입니다.소수 빈도(Prime Frequency)란 배열 내 특정 요소의 등장 횟수가 소수(prime number)인 경우를 의미합니다.이 두 개념을 바탕으로, 이번 글에서 다룰 문제는 소수 빈도를 가진 배열 요소 찾기입니다. 문자열이 주어지면 각 문자의 등장 횟수(빈도)를 계산하고, 해당 빈도가 소수인지 판별한 뒤, 소수 빈도를 가진 문자의 개수를 세는 것이 목표입니다.예제Input: str = helloworldOutput: 2설명각 문자의 등장 횟수는 다

  9. 양쪽의 짝수 또는 홀수 개수가 동일한 배열 인덱스를 찾는 C++ 프로그램

    특정 배열 인덱스를 기준으로 왼쪽과 오른쪽에 위치한 짝수(또는 홀수)의 개수가 서로 같은 인덱스를 찾는 것이 이 문제의 핵심입니다. 즉, 어떤 요소를 기준으로 그 왼쪽에 있는 짝수 또는 홀수의 개수와 오른쪽에 있는 짝수 또는 홀수의 개수가 일치하는 지점을 구해야 합니다.개념을 이해하기 위해 먼저 몇 가지 기본 용어를 살펴보겠습니다.기본 개념배열(Array) - 동일한 데이터 타입의 요소들을 담는 자료구조입니다.배열 인덱스(Array Index) - 배열에서 각 요소의 위치를 나타내는 값입니다. 배열의 인덱스는 항상 0부터 시작합니다

  10. C++로 배열 요소를 합쳐 모든 값이 K 이상이 될 때까지 만드는 최소 연산 횟수 구하기

    문제 개요 정렬되지 않은 배열 arr[]와 정수 K가 주어집니다. 우리는 배열의 두 요소를 선택해 더한 후 하나의 요소로 합치는 연산을 수행할 수 있으며, 이 연산을 반복하여 배열의 모든 요소가 K 이상이 되도록 만들어야 합니다. 목표는 이때 필요한 최소 연산 횟수를 구하는 것입니다. 예제 입력: arr[] = {1 10 12 9 2 3}, K = 6 출력: 2 풀이 설명 먼저 가장 작은 두 요소 (1 + 2)를 더하면 새로운 배열은 {3, 10, 12, 9, 3}이 됩니다. 다음으로 남아 있는 두 개의 작은 값 (3 + 3)

  11. C++로 아담 수(Adam Number) 판별하기: 개념부터 예제 코드까지

    아담 수(Adam Number)란?아담 수(Adam Number)는 어떤 수의 제곱이, 그 수를 거꾸로 뒤집은 수의 제곱을 다시 한 번 뒤집은 값과 정확히 일치하는 수를 말합니다.조금 더 쉽게 표현하면, 수 N에 대해 다음 두 값이 같을 때 N을 아담 수라고 부릅니다.N의 제곱N을 뒤집은 수의 제곱을 다시 뒤집은 값예시로 이해하기숫자 12를 예로 들어 보겠습니다.12의 제곱은 144입니다.12의 자릿수를 뒤집으면 21이 됩니다.21의 제곱은 441입니다.441은 144(=12의 제곱)를 뒤집은 값과 같습니다.두 값이 일치하므로 12

  12. C++ 부울 행렬: 행과 열을 1로 변환하는 알고리즘

    부울 행렬(Boolean Matrix)은 오직 0과 1 두 가지 값만으로 구성된 행렬입니다. 이 문제에서는 크기가 m×n인 부울 행렬 arr[m][n]이 주어지며, 다음 조건에 따라 행렬을 수정해야 합니다.문제 정의만약 m[i][j] = 1이라면, i번째 행의 모든 요소와 j번째 열의 모든 요소를 1로 변경해야 합니다. 즉, 값이 1인 원소가 하나라도 있으면 해당 원소가 속한 행과 열 전체가 1로 채워집니다.예시입력: arr[2][2] = 1 0 0 0 출력: arr[2][2] = 1 1 1 0설명: arr[0][0] = 1이므로

  13. C++ 가상 복사 생성자(Virtual Copy Constructor)의 개념과 활용법

    C++에서 객체 지향 프로그래밍을 깊이 있게 이해하기 위해, 본격적인 주제로 들어가기 전에 관련된 핵심 용어들을 먼저 정리해 보겠습니다. 핵심 개념 정리 복사 생성자(Copy Constructor) 복사 생성자는 전달받은 객체와 완전히 동일한 복제본을 만들어 내는 특수한 생성자입니다. 같은 클래스 타입의 다른 객체를 인자로 받아, 그 객체의 멤버 값들을 그대로 복사하여 새로운 객체를 초기화하는 역할을 수행합니다. 가상 함수(Virtual Function) 가상 함수는 부모(기반) 클래스에서 선언되고, 이를 상속받는 자식(파생)

  14. C++ alignof 연산자 완벽 가이드: 메모리 정렬(Alignment) 이해하기

    프로그래밍 언어에서 연산자(operator)는 컴파일러에게 특정 작업을 수행하도록 지시하는 특수 기호입니다. C++에는 다양한 연산자가 존재하는데, 그중 alignof는 메모리 정렬을 확인할 수 있는 강력한 도구입니다. alignof 연산자란? alignof 연산자는 주어진 데이터 타입에 적용되는 정렬(alignment) 값을 반환하는 C++ 연산자입니다. 반환되는 값은 바이트(byte) 단위이며, 해당 타입의 객체가 메모리에서 어떤 경계에 맞춰 저장되어야 하는지를 나타냅니다. C++11부터 표준으로 도입된 이 연산자는 성능 최적화

  15. C++로 구현하는 알리쿼트 수열(Aliquot Sequence) 완벽 가이드

    알리쿼트 수열(Aliquot Sequence)은 독특한 규칙을 따르는 수열입니다. 수열은 임의의 수에서 시작하며, 다음 항은 바로 앞 항의 진약수(자기 자신을 제외한 양의 약수)들을 모두 더한 값이 됩니다. 개념을 더 잘 이해할 수 있도록 간단한 예시를 살펴보겠습니다. 입력 : 8출력 : 8 7 1 0설명 : 8의 진약수는 4, 2, 1이며, 그 합은 7입니다. 7의 진약수는 1이며, 그 합은 1입니다. 1의 진약수는 없으며, 그 합은 0입니다. 따라서 수열은 8 → 7 → 1 → 0으로 끝납니다. 완전수

  16. C++로 구현하는 교차 피보나치 수열: 알고리즘과 예제 코드

    피보나치 수열이란? 피보나치 수(Fibonacci Number)는 일반적으로 0, 1 또는 1, 1처럼 고정된 두 개의 수로 시작하는 수열을 의미하며, 그 이후의 모든 항은 바로 앞에 있는 두 항을 더한 값으로 정의됩니다. 예를 들어 피보나치 수열의 초반 부분은 다음과 같습니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 피보나치 수열의 점화식 이 수열을 일반화하면, n번째 항은 (n-1)번째 항과 (n-2)번째 항의 합과 같습니다. 이를 수식으로 표현하면 다음과 같습니다. Tn = Tn-1 + Tn-

  17. C++ 익명 클래스 완전 정복: 개념, 특징부터 실전 예제까지

    C++ 익명 클래스란?프로그래밍에서 이름 없이 정의된 모든 것을 익명(anonymous) 엔티티라고 부릅니다. 마찬가지로 C++에서 이름이 지정되지 않은 클래스를 익명 클래스(Anonymous Class)라고 합니다. 익명 클래스는 하나의 기본적인 속성을 지닌 특수한 형태의 클래스입니다.익명 클래스의 주요 특징생성자가 존재하지 않음: 클래스에 이름이 없기 때문에 생성자(constructor)가 할당되지 않습니다. 대신 소멸자(destructor)는 존재하여 메모리 블록 해제 역할을 수행합니다.함수와 함께 사용할 수 없음: 익명 클래

  18. C++로 풀어보는 최소 페이지 수 할당 문제 — 이진 탐색 완전 정복

    최소 페이지 수 할당(Minimum Number of Pages Allocation)은 코딩 테스트와 알고리즘 학습에서 자주 등장하는 대표적인 문제입니다. 이 글에서는 문제를 자세히 살펴보고, 이진 탐색(Binary Search)을 활용한 효율적인 해결 방법까지 단계별로 알아보겠습니다. 문제 정의 서로 다른 n권의 책이 있고, 각 책의 페이지 수가 주어집니다. 또한 이 책들을 나누어 받을 m명의 학생이 있습니다. 조건은 다음과 같습니다. 책들은 페이지 수 기준으로 오름차순 정렬되어 있습니다. 각 학생에게는 반드시 연속된 책들만

  19. C++로 거의 완전수(Almost Perfect Number) 판별하기

    거의 완전수(Almost Perfect Number)는 최소 결핍수(least deficient number) 또는 약간 결핍수(slightly defective number)라고도 불리며, 1과 자기 자신을 포함한 모든 약수의 합이 2n-1과 정확히 일치하는 수를 의미합니다. 일반적인 완전수(perfect number)가 약수의 합이 2n과 같은 수라면, 거의 완전수는 그 값에서 정확히 1이 작은 경우입니다. 이 글에서는 주어진 수가 거의 완전수인지 판별하는 알고리즘을 C++ 코드와 함께 살펴보겠습니다. 개념 이해를 위한 예시

  20. C++에서 두 수의 비트를 번갈아 조합해 새로운 숫자 만들기

    이 문제에서는 두 숫자의 비트를 번갈아 사용해 새로운 숫자를 생성해야 합니다. 두 번째 숫자(m)의 첫 번째 비트(LSB)에서 시작하여, 첫 번째 숫자(n)의 두 번째 비트, 다시 두 번째 숫자의 세 번째 비트, 첫 번째 숫자의 네 번째 비트와 같은 방식으로 두 수의 비트를 교대로 선택하는 것이 핵심입니다. 문제 이해하기 예제를 통해 문제를 더 명확하게 이해해 보겠습니다. 입력 : n = 6, m = 10 출력 : 2 설명 : 비트 위치 : 3 2 1 0 n = 6 : 0 1 1 0 m = 10 :

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:77/300  20-컴퓨터/Page Goto:1 71 72 73 74 75 76 77 78 79 80 81 82 83