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

C++

  1. C++로 배열을 분할하고 첫 번째 부분을 끝에 추가하는 방법

    이 글에서는 배열을 분할한 후, 분할된 첫 번째 부분을 배열의 맨 뒤에 추가하는 방법을 살펴보겠습니다. 예를 들어 배열이 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}라고 가정해 보겠습니다. 이 배열을 두 부분으로 나누는데, 첫 번째 부분은 인덱스 0부터 3까지(분할 크기 4), 두 번째 부분은 나머지 요소들입니다. 첫 번째 부분을 배열 끝에 추가하면 최종 결과는 {4, 5, 6, 7, 8, 9, 0, 1, 2, 3}이 됩니다.이 문제는 간단한 왼쪽 회전(left rotation) 기법으로 해결할 수 있습니다. 분할 크기

  2. C++ STL로 배열의 모든 역순열(내림차순 순열) 생성하기

    이 글에서는 C++의 STL(표준 템플릿 라이브러리)을 활용하여 배열의 모든 역순열, 즉 내림차순 기준으로 정렬된 순열을 생성하는 방법을 알아봅니다.예를 들어 (1, 2, 3)이라는 세 개의 숫자가 있을 때, 일반적인 순열(오름차순 순열)과 역순열은 각각 다음과 같이 출력됩니다.일반 순열 (Forward Permutation)1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1역순열 (Reversed Permutation)3, 2, 13, 1, 22, 3, 12, 1, 31, 3, 21, 2, 3역순열을 구하

  3. C++ STL array 컨테이너의 get() 함수 완벽 정리

    이 글에서는 C++ STL의 std::array 컨테이너가 제공하는 get() 함수에 대해 자세히 알아보겠습니다. 이 함수는 배열 컨테이너에서 i번째 요소를 가져오는 데 사용되며, 컴파일 타임에 인덱스가 검증되어 안전하게 요소에 접근할 수 있다는 장점이 있습니다. 문법 get<i>(array_name) get() 함수는 두 개의 필수 매개변수를 받습니다. i (인덱스): 가져올 요소의 위치를 나타내며, 반드시 컴파일 타임 상수여야 합니다. array_name: 요소를 가져올 대상 배열의 이름입니다. 함수는 지정된 i번

  4. C++ STL array::crbegin()과 array::crend() 함수 완벽 정리

    개요이 글에서는 C++ STL(표준 템플릿 라이브러리)의 std::array 컨테이너가 제공하는 crbegin()과 crend() 함수에 대해 알아봅니다. 두 함수는 배열을 역방향으로 안전하게 순회할 수 있도록 도와주며, 요소를 수정할 수 없는 상수(const) 반복자를 반환한다는 점이 특징입니다.array::crbegin()이란?array::crbegin()은 컨테이너의 마지막 요소를 가리키는 상수 역방향 반복자(constant reverse iterator)를 반환하는 함수입니다. 함수 이름의 c는 constant(상수), r은

  5. C++ STL의 array::fill()과 array::swap() 함수 완벽 정리

    이번 글에서는 C++ STL에서 제공하는 array::fill() 함수와 array::swap() 함수의 개념과 사용법을 예제 코드와 함께 자세히 알아보겠습니다.array::fill() 함수란?array::fill() 함수는 배열의 모든 요소를 지정한 값으로 한 번에 채우는 기능을 합니다. 반복문을 직접 작성하지 않아도 간단한 함수 호출 하나로 배열 전체를 초기화할 수 있어 코드가 훨씬 간결해집니다. 시간 복잡도는 배열 크기에 비례하여 O(N)입니다.다음 예제를 통해 실제 동작 방식을 살펴보겠습니다.예제 코드#include<i

  6. C++로 쌍대칭 행렬(Bisymmetric Matrix) 판별하기

    이번 글에서는 주어진 행렬이 쌍대칭 행렬(Bisymmetric Matrix)인지 판별하는 프로그램을 살펴보겠습니다.쌍대칭 행렬이란 두 개의 대각선, 즉 주대각선(왼쪽 위 → 오른쪽 아래)과 부대각선(오른쪽 위 → 왼쪽 아래)을 기준으로 모두 대칭인 정사각 행렬을 의미합니다. 다음 행렬이 쌍대칭 행렬의 대표적인 예시입니다.1 2 3 4 5 2 6 7 8 4 3 7 9 7 3 4 8 7 6 2 5 4 3 2 1알고리즘checkBiSymmetric(mat, n)쌍대칭 여부를 확인하는 절차는 크게 두 단계로 나뉩니다.주대각선 대칭 검사:

  7. C++에서 시스템 시간 출력하기 (3가지 방법)

    C++에서는 시스템의 요일, 날짜, 시간을 사람이 읽기 쉬운 형태(Human Readable Format)로 출력하는 다양한 방법이 있습니다. 이 글에서는 대표적인 세 가지 방법을 예제 코드와 함께 살펴보겠습니다.첫 번째 방법: time(), localtime(), asctime() 사용각 함수의 역할은 다음과 같습니다.time() − 현재 캘린더 시간(달력 기준 시간)을 구하는 함수로, 시간을 저장하는 산술 데이터 타입(time_t)을 반환합니다.localtime() − time_t 값을 받아 날짜와 시간 정

  8. C++ 클래스 내부 동작 원리: 기본 생성자의 비밀

    이번 글에서는 C++ 클래스의 내부 동작(Class Internals)에 대해 살펴보겠습니다. 그에 앞서 내부 동작과 밀접한 관련이 있는 기본 생성자(Default Constructor)부터 먼저 이해할 필요가 있습니다.기본 생성자란 무엇인가?기본 생성자란 어떠한 인수도 받지 않는 생성자를 의미합니다. 사용자가 직접 정의할 수도 있고, 컴파일러가 암묵적으로 만들어줄 수도 있습니다.그렇다면 왜 기본 생성자가 필요할까요? 핵심은 다음과 같습니다.사용자가 기본 생성자를 정의하지 않으면, 컴파일러가 암묵적으로 기본 생성자를 선언합니다.기본

  9. C++로 배우는 보고 소트(Bogo Sort): 순열 정렬 알고리즘의 이해와 구현

    이번 글에서는 보고 소트(Bogo Sort)라는 독특한 정렬 알고리즘을 살펴봅니다. 보고 소트는 순열 정렬(Permutation Sort), 바보 정렬(Stupid Sort), 느린 정렬(Slow Sort) 등 다양한 이름으로도 불립니다.보고 소트는 실용성 측면에서 극히 비효율적인 정렬 기법으로, 생성 후 검증(Generate and Test) 패러다임에 속합니다. 작동 원리는 매우 단순합니다. 리스트가 정렬될 때까지 요소들을 무작위로 섞는(shuffle) 과정을 반복하는 것입니다. 운이 좋다면 몇 번 만에 정렬되지만, 최악의 경우

  10. 체켄도르프 정리(Zeckendorf's Theorem)를 구현하는 C++ 프로그램

    이 글에서는 주어진 합을 서로 인접하지 않은 피보나치 수들의 덧셈으로 표현할 수 있는지 확인하고, 가능하다면 어떤 수들인지 찾는 방법을 알아보겠습니다. 예를 들어 주어진 합이 10이라면, 이는 8과 2의 합입니다. 8과 2는 모두 피보나치 수이면서 서로 인접하지 않습니다.이 문제는 체켄도르프 정리(Zeckendorfs Theorem)와 관련이 있습니다. 체켄도르프 정리에 따르면 모든 양의 정수는 서로 연속되지 않은(인접하지 않은) 피보나치 수들의 합으로 유일하게 표현할 수 있습니다. 핵심 아이디어는 매 단계에서 합보다 크지 않은 가

  11. C++로 행렬을 Z자 형태로 출력하는 프로그램 만들기

    이번 글에서는 행렬의 요소들을 Z자 형태로 출력하는 C++ 프로그램을 작성하는 방법을 알아보겠습니다. Z 형태 출력은 다음과 같은 순서로 진행됩니다. 첫 번째 행: 행렬의 가장 윗줄에 있는 모든 요소를 출력합니다. 반대각선: 오른쪽 위에서 왼쪽 아래로 내려가는 대각선상의 요소들을 출력합니다. 단, 양 끝 모서리는 이미 첫 번째 행과 마지막 행에 포함되어 있으므로 건너뜁니다. 마지막 행: 행렬의 가장 아랫줄에 있는 나머지 요소들을 출력합니다. 예를 들어 아래와 같은 4×4 행렬이 주어졌다고 가정해 보겠습니다. 5 8 7 1 2 3

  12. C++ 문자열(String) 클래스 완벽 가이드: 생성자, 연산자, 주요 함수 활용법

    C++에는 String 클래스가 내장되어 있으며, 이는 전통적인 C 스타일 문자열과는 확연히 다릅니다. C 언어에서 문자열은 사실상 char 배열에 불과하지만, C++의 string 클래스는 다양한 멤버 함수와 연산자를 제공하여 훨씬 안전하고 편리하게 문자열을 다룰 수 있습니다.이 글에서는 C++ string 클래스의 핵심 기능을 세 가지 측면에서 살펴보겠습니다. 바로 생성자, 연산자, 그리고 주요 멤버 함수입니다.1. 다양한 생성자 활용하기string 클래스는 여러 형태의 생성자를 제공합니다. 문자열 리터럴로 초기화하거나, 다른

  13. C++에서 복소수의 절댓값을 구하는 abs() 함수 사용법

    C++의 abs() 함수는 복소수의 절댓값(absolute value)을 계산하는 데 사용됩니다. 복소수의 절댓값은 크기(modulus)라고도 불리며, 복소 평면에서 해당 수가 원점으로부터 얼마나 떨어져 있는지를 나타내는 거리 값입니다.복소수 절댓값 공식복소수 a+bi의 절댓값은 다음과 같은 수식으로 구할 수 있습니다.|a+bi| = √(a² + b²)즉, 실수부와 허수부를 각각 제곱하여 더한 뒤 제곱근을 취하면 됩니다. C++에서는 이 계산을 직접 구현할 필요 없이 abs() 함수가 결과를 자동으로 반환해 줍니다.abs() 함수의

  14. C++에서 문자열 길이를 구하는 5가지 방법

    문자열(String)은 일련의 문자들로 이루어진 선형 배열(linear array)을 의미합니다. 그 선언 방식은 다른 배열을 정의하는 것과 동일합니다.문자열의 길이란 해당 문자열에 포함된 문자의 개수를 말합니다. C++에서는 이를 구할 수 있는 다양한 내장 함수와 직접 구현하는 방법들이 있습니다. 이번 글에서는 C++에서 문자열 길이를 구하는 대표적인 5가지 방법을 예제 코드와 함께 살펴보겠습니다.1) C의 strlen() 함수 사용strlen() 함수는 C 언어에서 제공하는 함수로, 정수형 값을 반환합니다. 이 함수를 사용하려면

  15. C++로 숫자의 짝수 약수의 합을 구하는 방법

    이 프로그램은 주어진 숫자의 모든 짝수 약수를 찾아 그 합을 계산한 뒤 결과를 출력하는 역할을 합니다.문제 이해하기예를 들어 다음과 같이 동작합니다.입력 : 30짝수 약수 : 2+6+10+30 = 48출력 : 4830의 약수 중 짝수인 값들은 2, 6, 10, 30이며, 이들을 모두 더하면 48이 됩니다.해결 방법가장 단순한 접근법은 숫자의 모든 약수를 찾은 후, 그중 짝수만 골라 합을 구하는 것입니다.하지만 더 효율적인 방법은 소인수분해를 활용하는 것입니다. 소인수분해를 이용하면 약수의 합을 다음 공식으로 구할 수 있습니다.약수의

  16. C++에서 포인터를 활용해 문자열의 모음 개수 세는 방법

    포인터를 사용하여 문자열에 포함된 모음의 개수를 구하려면 먼저 문자열, 모음, 그리고 문자열과 포인터를 함께 사용하는 방법에 대한 기본 개념을 이해해야 합니다.기본 개념 정리문자열(String)은 문자들의 배열입니다. 모음(Vowel)은 {a, e, i, o, u} 집합에 속하는 문자를 의미합니다. 포인터(Pointer)는 변수가 저장된 메모리 위치(주소) 값을 저장하는 변수입니다.문자열에서 모음의 개수를 찾는 방법은 간단합니다. 문자열을 처음부터 끝까지 순회하면서 각 문자가 모음과 일치하는지 비교하고, 일치할 경우 카운터 값을 1

  17. C++로 X로 나누어 떨어지는 가장 작은 K자리 숫자 구하기

    문제 개요주어진 정수 X에 대해, X로 나누어 떨어지면서 자릿수가 정확히 K인 가장 작은 숫자를 구하는 프로그램을 작성하는 것이 목표입니다. 이 문제는 반복문 없이 간단한 수학 공식 하나만으로 해결할 수 있으며, 시간 복잡도는 O(1)입니다.해결 접근 방식공식은 다음 순서로 동작합니다.K자리 최솟값 계산: K자리 숫자 중 가장 작은 값은 10^(K−1)입니다. 예를 들어 K가 2라면 10, K가 3이라면 100, K가 5라면 10000이 됩니다.나눗셈 검사: 이 최솟값(min)이 X로 나누어 떨어지는지 확인합니다. 나머지가 0이라면

  18. C++ 문자열(String) 클래스의 개념과 실전 활용 예제

    문자열(String)은 여러 개의 문자가 연속된 형태를 의미합니다. C++ 프로그래밍 언어에서는 문자열을 크게 두 가지 방식으로 정의할 수 있습니다.C 스타일 문자열: 문자열을 문자 배열(char array)로 취급하는 전통적인 방식입니다.C++ 문자열 클래스(string class): 표준 라이브러리에서 제공하는 객체 기반의 문자열 처리 방식입니다.C++ 문자열 클래스란?C++에서는 <string> 헤더 파일을 포함하여 문자열 클래스를 사용할 수 있습니다. 내부적으로는 문자 배열 형태로 메모리에 저장되지만, 사용자에게는

  19. C++ mutable 키워드란? const 객체에서도 멤버 변수를 수정하는 방법

    mutable 키워드로 선언된 데이터 멤버는 객체가 const 타입으로 선언되어 있더라도 런타임에 값을 변경할 수 있는 특별한 멤버입니다. 이름 그대로 const와 정반대 역할을 하는 개념이라고 할 수 있습니다. 실제 프로그래밍에서는 객체 내부의 대부분의 멤버는 상수처럼 보호하면서도, 한두 개의 멤버만은 변경 가능하게 유지해야 하는 경우가 자주 발생합니다. 예를 들어 캐싱(caching), 지연 계산(lazy evaluation), 접근 횟수 카운터 등이 대표적인 활용 사례입니다. 이런 상황에서 mutable은 클래스를 안전하고 깔

  20. C++ 내부 동작 원리 완벽 이해: 컴파일러 작동 방식과 핵심 개념

    C++ 내부 동작이란 무엇인가?C++ 내부 동작(C++ Internals)이란 C++ 컴파일러가 .cpp 소스 코드를 컴파일하여 최종 출력물을 만들어내는 과정 전반을 의미합니다. C++는 주로 시스템 소프트웨어 작성에 널리 사용되는 인기 있는 프로그래밍 언어로, C 프로그래밍 언어의 확장판입니다. C는 대표적인 컴파일 언어이며, C++ 역시 마찬가지로 컴파일러를 통해 기계가 이해할 수 있는 형태로 변환됩니다.C++ 컴파일 과정의 이해C++ 컴파일러는 C++ 코드를 컴파일하여 오브젝트 파일 또는 실행 파일을 생성합니다. 이렇게 만들어

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:67/300  20-컴퓨터/Page Goto:1 61 62 63 64 65 66 67 68 69 70 71 72 73