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

C++

  1. C++ 연결 리스트에서 오른쪽 최댓값 노드를 가리키는 임의 포인터 설정 방법

    문제 소개 이 문제에서는 데이터(data), 다음 노드를 가리키는 링크 포인터(next), 그리고 임의 포인터(arbitrary pointer)를 함께 가지는 연결 리스트가 주어집니다. 우리가 해야 할 작업은 각 노드의 임의 포인터가 연결 리스트에서 자신보다 오른쪽에 있는 노드들 중 가장 큰 값을 가진 노드를 가리키도록 만드는 것입니다. 예시를 통해 문제를 이해해 보겠습니다. 그림에서 확인할 수 있듯이, 연결 리스트의 각 노드가 가진 임의 포인터는 자신의 오른쪽에 위치한 노드들 중 가장 큰 값을 가리킵니다. 12 -> 76

  2. C++에서 복소수의 지수 값을 계산하는 std::exp() 함수 완벽 정리

    이 글에서는 C++ STL에서 복소수(complex number)의 지수 값을 계산하는 std::exp() 함수의 동작 원리, 문법, 그리고 실제 예제까지 자세히 살펴보겠습니다.std::exp()란 무엇인가?std::exp()는 C++ 표준 라이브러리(STL)에 내장된 함수로, <complex> 헤더 파일에 정의되어 있습니다. 일반적으로 많이 사용하는 <cmath> 헤더의 exp() 함수가 실수의 지수 값을 구하는 것과 마찬가지로, 복소수용 exp() 함수는 입력으로 받은 복소수의 지수(exponential)

  3. C++ STL exp2() 함수 완벽 정리: 밑이 2인 지수 함수 계산법

    C++ 프로그래밍에서 지수 계산은 다양한 알고리즘과 수학적 연산에서 자주 활용됩니다. 이번 글에서는 C++ 표준 라이브러리(STL)에서 제공하는 std::exp2() 함수의 개념, 문법, 그리고 실전 예제까지 자세히 살펴보겠습니다.std::exp2() 함수란?std::exp2()는 C++ 표준 라이브러리에 내장된 수학 함수로, <cmath> 또는 <ctgmath> 헤더 파일에 정의되어 있습니다. 이 함수는 주어진 숫자에 대해 밑이 2인 지수 함수, 즉 2n의 값을 계산합니다.자연상수 e(약 2.71828)를 밑

  4. C++ localtime() 함수 – 개념, 문법 및 예제 총정리

    이 글에서는 C++ STL의 localtime() 함수가 어떻게 동작하는지, 그리고 그 문법과 실제 활용 예제까지 자세히 살펴보겠습니다. localtime() 함수란? localtime() 함수는 C++ STL에 내장된 함수로, <ctime> 헤더 파일에 정의되어 있습니다. 이 함수는 주어진 시간 값을 시스템의 현지 시간(지역 시간)으로 변환하는 데 사용됩니다. 함수는 timer 포인터가 참조하는 값을 읽어 tm 구조체에 값을 채워 넣으며, 이 값을 실행 중인 시스템이 설정된 지역 시간대에 맞게 변환합니다. 문법 loca

  5. C++ valarray::max() 함수 완벽 가이드: 문법과 예제

    이 글에서는 C++ STL에서 제공하는 valarray::max() 함수의 동작 방식, 문법 그리고 실제 활용 예제까지 자세히 살펴보겠습니다.valarray란 무엇인가?std::valarray는 값들의 배열을 표현하고 조작하기 위해 사용되는 클래스입니다. 요소 단위(element-wise)의 수학적 연산을 지원하며, 수치 계산에 최적화되어 있어 벡터나 배열 기반의 연산을 간결하게 처리할 수 있습니다.valarray::max()란 무엇인가?std::valarray::max() 함수는 C++ STL에 내장된 함수로, <valarr

  6. 예제로 배우는 C++의 norm() 함수

    이 글에서는 C++ STL에서 norm() 함수의 동작 방식, 문법 그리고 실제 예제를 살펴보겠습니다. norm() 함수란? norm() 함수는 C++ STL의 내장(built-in) 함수로, <complex> 헤더 파일에 정의되어 있습니다. 이 함수는 복소수(complex number)의 노름(norm) 값을 구하는 데 사용됩니다. 복소수의 노름 값이란 해당 복소수 크기(magnitude)의 제곱을 의미합니다. 쉽게 말해, norm() 함수는 실수부와 허수부를 모두 포함한 복소수의 크기를 제곱한 값을 반환합니다. 문법

  7. C++ STL의 nearbyint() 함수 완벽 가이드: 사용법과 예제

    이 글에서는 C++ STL에서 제공하는 nearbyint() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.nearbyint() 함수란?nearbyint() 함수는 C++ STL에 내장된 함수로, <cmath> 헤더 파일에 정의되어 있습니다. 이 함수는 입력받은 값을 현재 설정된 반올림 규칙에 따라 가장 가까운 정수 값으로 변환하여 반환합니다.함수는 입력값을 가장 가까운 정수 값으로 반올림하며, 이때 적용되는 반올림 방식은 fegetround() 함수가 반환하는 현재 반올림 모드(rounding

  8. C++ scalbn() 함수 완벽 가이드 – 개념, 문법, 예제 총정리

    이 글에서는 C++ STL의 scalbn() 함수가 어떻게 동작하는지, 그리고 문법과 실제 활용 예제를 차근차근 살펴보겠습니다.scalbn() 함수란?scalbn() 함수는 C++ STL에 내장된 함수로, <cmath> 헤더 파일에 정의되어 있습니다. 이 함수는 부동 소수점 기수(FLT_RADIX)의 거듭제곱을 이용해 유효숫자(significand)를 효율적으로 스케일링(scaling)하는 데 사용됩니다.여기서 유효숫자(significand)란 부동 소수점 수를 구성하는 유효 자릿수 부분을 의미하며, 지수의 해석 방식에

  9. C++ STL mktime() 함수 완벽 가이드: 개념, 문법, 예제 코드

    이 글에서는 C++ STL에서 제공하는 mktime() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.mktime() 함수란?mktime()은 C++ STL에 내장된 함수로, <ctime> 헤더 파일에 정의되어 있습니다. 이 함수는 현지 시간(local time) 정보를 담고 있는 tm 구조체를 time_t 객체로 변환하는 역할을 합니다.mktime()은 localtime() 함수와 정반대의 기능을 수행하는 함수라고 볼 수 있습니다. localtime()이 time_t 값을 해당 기계의 현지 시

  10. C++ quick_exit() 함수 완벽 정리: 개념, 문법, 실전 예제까지

    이 글에서는 C++ STL에서 제공하는 quick_exit() 함수의 동작 원리, 문법, 그리고 실제 사용 예제를 자세히 알아보겠습니다.quick_exit()란 무엇인가?quick_exit() 함수는 C++ 표준 라이브러리(STL)에 내장된 함수로, <cstdlib> 헤더 파일에 정의되어 있습니다. 이 함수는 호출된 프로세스를 빠르게 종료하는 역할을 하며, 일반적인 종료 과정과 달리 리소스 정리 작업 없이 즉시 프로세스를 끝냅니다.quick_exit()는 정상 종료(normal termination)로 분류되지만, exi

  11. C++ STL의 std::merge() 함수로 두 개의 정렬된 배열을 빠르게 병합하는 방법

    이 글에서는 C++ STL의 std::merge() 함수를 사용하여 두 개의 정렬된 배열을 빠르고 효율적으로 병합하는 방법을 알아보겠습니다.문제를 해결하기에 앞서, 먼저 C++ STL의 std::merge() 함수가 어떤 기능을 하는지 살펴보겠습니다.std::merge()란 무엇인가?std::merge()는 C++ STL에 내장된 함수로, <algorithm> 헤더 파일에 정의되어 있습니다. 이 함수는 두 개의 정렬된 범위(range) 또는 시퀀스를 병합하는 데 사용됩니다.merge()는 두 개의 정렬된 범위를 입력받아

  12. C++ 소멸자(Destructor) 완벽 이해하기 – 호출 시점과 참조 반환의 함정

    소멸자(Destructor)는 C++에서 클래스의 객체를 소멸(제거)하는 역할을 담당하는 특수 멤버 함수입니다. 객체의 수명이 끝나는 순간 자동으로 호출되며, 메모리 해제나 리소스 정리 작업에 주로 활용됩니다.소멸자가 호출되는 시점소멸자는 프로그램 내에서 객체가 자신의 유효 범위(scope)를 벗어나는 순간 호출됩니다. 대표적인 경우는 다음과 같습니다.함수의 실행이 종료되어 함수의 범위를 벗어날 때프로그램 전체가 종료될 때객체의 지역 변수를 담고 있던 블록({ })이 범위를 벗어날 때delete 연산자로 동적으로 생성된 객체가 삭제

  13. C++로 모든 행의 합이 동일한 N×N 행렬 만들기

    이 문제에서는 정수 N이 주어지며, 우리의 과제는 1부터 N2까지의 숫자를 N×N 크기의 2차원 행렬에 배치하되, 각 행에 있는 요소들의 합이 모두 같아지도록 만드는 것입니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다.입력 − N = 4출력 −1 6 11 162 7 12 133 8 9 144 5 10 15각 행 요소들의 합은 모두 34입니다.해결 접근 방법이 문제를 해결하려면 각 행의 총합이 동일해지도록 행렬의 각 요소를 적절히 배치해야 합니다. 이를 위해 그리디(Greedy) 접근 방식을 사용하여 한 행씩 올바른 요소를 배치함

  14. C++로 서로 공격하지 않도록 K개의 나이트 배치하기

    문제 개요 이 문제에서는 세 개의 정수 K, N, M이 주어지며, 우리의 과제는 NxM 크기의 체스판 위에 서로 공격하지 않도록 K개의 나이트를 배치하는 것입니다. 유효한 배치 방법이 존재하지 않는 경우도 있고, 여러 가지 배치가 가능한 경우도 있습니다. 이때 가능한 모든 유효한 배치를 출력해야 합니다. 나이트(Knight)는 체스 기물 중 하나로, 두 칸 앞으로 이동한 뒤 한 칸 왼쪽 또는 오른쪽으로 움직이는 말입니다. 체스판 위에서 어느 방향으로든 이동할 수 있습니다. 공격(Attack)은 한 기물이 유효한 수 중 하나를 두었

  15. C++ 이진 탐색으로 최소 거리를 최대화하는 k개 요소 배치 방법

    이 문제에서는 같은 직선 위에 놓여 있는 n개의 점으로 구성된 배열이 주어집니다. 목표는 이 배열에서 k개의 요소를 선택·배치하여 요소들 사이의 최소 거리가 최대화되도록 만드는 것입니다. 문제 예시 예제를 통해 문제를 살펴보겠습니다. 입력 − array = {3, 5, 6, 9, 1, 8}, k = 3 출력 − 4 설명 − 배열을 오름차순으로 정렬하면 {1, 3, 5, 6, 8, 9}가 됩니다. 3개의 요소를 골라 서로 간 최소 거리를 가장 크게 만들려면 1, 5, 9를 선택해야 하며, 이때 인접한 요소 사이의 거리는 각각 4이므로

  16. 파이프와 저수조(Pipes & Cisterns) 문제 풀이 완벽 가이드

    파이프와 저수조(pipes and cisterns) 문제는 각종 경시대회와 채용 시험에서 빠짐없이 등장하는 대표적인 수학 유형입니다. 처음에는 생소하게 느껴질 수 있지만, 기본 원리만 이해하면 어렵지 않게 풀 수 있으므로 미리 숙지해 두는 것이 좋습니다.파이프와 저수조 문제의 기본 원리이 유형의 문제는 탱크(저수조)를 채우거나 비우는 파이프가 등장합니다. 핵심 개념을 정리하면 다음과 같습니다.유입 파이프와 유출 파이프: 유입 파이프(inlet pipe)는 탱크를 채우고, 유출 파이프(outlet pipe)는 탱크를 비웁니다.1시간당

  17. C++로 구현하는 피어폰트 소수(Pierpont Prime) 찾기

    이 문제에서는 하나의 수 n이 주어지며, 우리의 목표는 n보다 작은 모든 피어폰트 소수(Pierpont Prime)를 찾아 출력하는 것입니다. 피어폰트 소수란 다음과 같은 특정한 형태를 갖는 소수를 의미합니다. p = 2i × 3k + 1 여기서 p는 소수이며, i와 k는 임의의 음이 아닌 정수입니다. 쉽게 말해, 어떤 수에서 1을 뺀 값이 오직 2와 3의 거듭제곱의 곱으로만 표현될 수 있고, 그 수 자체가 소수라면 그것이 바로 피어폰트 소수입니다. 문제를 이해하기 위해 예시를 살펴보겠습니다. 입력 − n = 50 출력

  18. C++ 배열에서 점 선택하기: 자석 간 최소 거리를 최대화하는 방법

    문제 개요이 문제에서는 N개의 인덱스 위치를 나타내는 n개의 요소로 구성된 배열 arr[]와 C개의 자석이 주어집니다. 우리의 목표는 가장 가까운 두 자석 사이의 거리가 최대한 크도록 모든 자석을 배치하고, 그때의 최소 거리 값을 구하는 것입니다.예시를 통해 문제를 살펴보겠습니다.입력 − array = { 1, 4, 6, 12, 28, 44 }, C = 4출력 − 11해결 접근 방법이 문제는 이진 탐색(Binary Search)을 활용하면 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.먼저 가

  19. C++ 알고리즘 풀이: 연속 반복이 K를 초과하지 않도록 최대 합이 되는 M개 요소 선택하기

    문제 설명배열 arr[]과 두 정수 M, K가 주어졌을 때, 주어진 배열의 원소들만을 사용해 새로운 배열을 만드는 것이 목표입니다. 이때 반드시 지켜야 할 조건은 다음과 같습니다.새 배열의 크기는 정확히 M이어야 합니다.크기가 K보다 큰 어떤 부분 배열(sub-array)도 모든 원소가 동일해서는 안 됩니다.최종적으로 위 조건을 만족하면서 만들 수 있는 배열의 최대 합을 출력해야 합니다.예시입력: arr[] = {1, 2, 4, 5, 7}, M = 5, K = 2설명: 조건을 만족하는 배열은 {7, 7, 5, 7, 7}입니다. 이

  20. C++로 구현하는 이진 트리 지그재그(Zigzag) 순회 알고리즘

    이 문제에서는 하나의 이진 트리(binary tree)가 주어지며, 우리의 과제는 이 이진 트리를 지그재그(zigzag) 형태로 출력하는 것입니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다. 다음과 같은 이진 트리가 있다고 가정해 봅시다.위 이진 트리를 지그재그 방식으로 순회한 결과는 다음과 같습니다.3    5    1    8    7    0    4접근 방법이 문제를 해결하려면 이진 트리를 레벨(level) 단위로

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:160/300  20-컴퓨터/Page Goto:1 154 155 156 157 158 159 160 161 162 163 164 165 166