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

C++

  1. C++로 처음 n개 자연수의 제곱합 구하기

    이 글에서는 처음 n개의 자연수(1부터 n까지)의 제곱합을 구하는 C++ 프로그램 작성 방법을 살펴보겠습니다.반복문을 이용한 기본 접근 방식가장 직관적인 방법은 1부터 n까지 반복하는 for 루프를 사용하는 것입니다. 각 반복 단계에서 현재 항의 제곱을 계산한 뒤 합계 변수에 더해주면 됩니다. 이 방식은 n번 반복하기 때문에 시간 복잡도가 O(n)입니다.알고리즘: squareNNatural(n)begin sum := 0 for i in range 1 to n, do sum := sum + i^2

  2. C++에서 주어진 횟수만큼 문자열을 반복 연결하는 프로그램

    이 글에서는 하나의 문자열을 사용자가 입력한 횟수(n)만큼 반복해서 연결하는 방법을 알아보겠습니다. 문제 자체는 매우 간단하며, C++에서는 + 연산자(또는 += 연산자)를 사용해 손쉽게 문자열을 이어 붙일 수 있습니다.예를 들어 문자열 Hello를 5번 연결하면 HelloHelloHelloHelloHello라는 결과가 만들어집니다. 아래 알고리즘과 예제 코드를 통해 구현 과정을 살펴보겠습니다.알고리즘concatStrNTimes(str, n)begin    res := 빈 문자열 &nbs

  3. C++ 포인터로 문자열의 모음 개수를 세는 프로그램 구현하기

    C++에서 문자열에 포함된 모음(a, e, i, o, u)의 개수를 세려면 문자열 전체를 한 글자씩 확인해야 합니다. 이 과정에서 포인터를 활용하면 코드를 간결하고 효율적으로 작성할 수 있습니다. 포인터 기반 탐색은 널 문자(\0)로 끝나는 C 스타일 문자열에서 동작합니다. 문자열이 포인터 str이 가리키고 있다면, 시작 시점에 *str은 첫 번째 문자를 나타냅니다. str을 1씩 증가시킬 때마다 *str은 다음 문자를 차례대로 가리키게 됩니다. 현재 가리키는 문자가 소문자 [a, e, i, o, u] 또는 대문자 [A, E, I,

  4. 1/1! + 2/2! + 3/3! + … + n/n! 급수의 합을 구하는 C++ 프로그램

    이 글에서는 주어진 급수의 합을 구하는 방법을 알아보겠습니다. 여기서 n 값은 사용자가 직접 입력합니다. 가장 단순한 방법은 팩토리얼 함수를 만들어 루프의 각 단계마다 팩토리얼을 계산하는 것입니다. 하지만 팩토리얼 계산은 일반적인 덧셈에 비해 연산 비용이 크게 드는 작업입니다. 따라서 우리는 이전 단계에서 계산한 팩토리얼 값을 재사용하는 방식으로 효율성을 높일 수 있습니다. 예를 들어 3!는 (3 × 2 × 1)이고, 4!는 4 × 3!입니다. 즉, 3!를 어떤 변수에 저장해 두었다면, 여기에 다음 숫자인 4만 곱하면 곧바로 4!

  5. C++로 파일 내용을 단어 단위로 읽는 방법

    이 글에서는 C++를 사용하여 파일의 내용을 단어(word) 단위로 읽는 방법을 알아보겠습니다. 구현 자체는 매우 간단합니다. 핵심은 파일 입력 스트림(fstream)을 활용하는 것입니다.파일 스트림으로 파일 이름을 지정해 파일을 연 뒤, 추출 연산자(>>)를 이용해 공백을 기준으로 단어를 하나씩 읽어 문자열 변수 word에 저장하고, 이를 반복적으로 콘솔에 출력하면 됩니다. >> 연산자는 기본적으로 공백(스페이스, 탭, 줄바꿈)을 건너뛰기 때문에 별도의 파싱 처리 없이도 단어 단위 입력이 가능합니다.알고리즘r

  6. 경쟁 프로그래밍과 코딩 테스트에 유용한 C++ 트릭 총정리 (C++11)

    경쟁 프로그래밍이나 코딩 테스트에서는 문제 해결 능력만큼이나 코드를 얼마나 빠르게 작성하느냐가 중요합니다. 잘 알려진 C++의 숨은 기능들을 활용하면 불필요한 구현 시간을 줄이고 실수 가능성도 낮출 수 있습니다. 이 글에서는 C++11 기준으로 실전에서 바로 쓸 수 있는 유용한 트릭들을 하나씩 소개합니다. 1. % 연산자 없이 홀수·짝수 판별하기 나머지 연산자(%)를 쓰지 않고도 비트 AND 연산으로 홀수와 짝수를 구분할 수 있습니다. 모든 홀수는 최하위 비트(LSb)가 1이므로, 숫자와 1을 AND 연산하면 최하위 비트만 남게

  7. C++로 알리쿼트 합(Aliquot Sum) 구하는 방법 – 개념부터 코드 예제까지

    알리쿼트 합(Aliquot Sum)이란?알리쿼트 합은 어떤 수 n의 약수 중에서 자기 자신을 제외한 나머지 약수(진약수)를 모두 더한 값입니다. 예를 들어 숫자가 20이라면, 20의 진약수는 (1, 2, 4, 5, 10)입니다. 따라서 알리쿼트 합은 1+2+4+5+10 = 22가 됩니다.여기서 흥미로운 사실 하나! 어떤 수의 알리쿼트 합이 그 수 자신과 같다면, 그 수를 완전수(perfect number)라고 부릅니다. 대표적인 예가 바로 6입니다. 6의 진약수는 (1, 2, 3)이며, 알리쿼트 합은 1+2+3 = 6으로 자기 자신

  8. C++로 N까지의 교대 소수 출력하기

    이 글에서는 C++를 사용해 N까지 존재하는 모든 교대 소수(alternate prime)를 출력하는 방법을 살펴봅니다. 교대 소수란 주어진 범위 안의 전체 소수 목록에서 한 개씩 건너뛰며 선택한 소수들을 의미합니다. 예를 들어 N = 15라고 가정해 보겠습니다. 15 이하의 소수는 {2, 3, 5, 7, 11, 13}이며, 이 중 교대 소수는 {2, 5, 11}입니다. 즉, 첫 번째 소수를 선택한 뒤 바로 다음 소수는 건너뛰고, 그다음 소수를 다시 선택하는 방식으로 진행됩니다. 알고리즘 printAlternatePrime(N) B

  9. C++에서 산술 평균(Arithmetic Mean) 구하기

    산술 평균(Arithmetic Mean)은 우리가 흔히 말하는 숫자들의 평균값입니다. 이 글에서는 C++를 사용해 주어진 숫자 집합의 산술 평균을 구하는 방법을 알아보겠습니다.함수는 두 가지 매개변수를 받습니다. 하나는 숫자 데이터 집합이고, 다른 하나는 그 집합에 포함된 원소의 개수입니다. 동작 방식은 매우 간단합니다. 먼저 모든 원소를 차례대로 더한 뒤, 그 합을 원소의 개수로 나누면 산술 평균이 완성됩니다.알고리즘arithmeticMean(dataset, n)begin    sum := 0   &nb

  10. C++ 복소수(complex)의 asin() 함수 사용법

    이 글에서는 C++에서 복소수(complex number)에 대해 asin() 함수를 사용하는 방법을 알아봅니다.C++에서 복소수를 다루려면 <complex> 헤더 파일을 포함해야 합니다. 이 헤더 파일에는 일반 asin() 함수의 복소수 버전도 함께 정의되어 있으며, 이를 통해 복소수의 아크사인(arc sine, 역사인) 값을 계산할 수 있습니다.asin() 함수의 동작 방식복소수용 asin() 함수는 복소수 하나를 입력 매개변수로 받고, 그 아크사인 값을 복소수 형태로 반환합니다. 실수부와 허수부로 구성된 입력값에 대

  11. C++에서 복소수를 위한 atan() 함수 사용 방법

    이번 글에서는 복소수(complex number)에 대한 atan() 함수 사용법을 알아보겠습니다. C++에서는 <complex> 헤더 파일을 포함하면 복소수를 손쉽게 다룰 수 있으며, 이 헤더 안에는 일반 atan() 함수의 복소수 버전도 함께 정의되어 있습니다.일반적인 atan() 함수가 실수의 역탄젠트(arctan) 값을 구하는 것과 달리, 복소수 버전은 복소평면상에서 복소수의 아크탄젠트 값을 계산합니다. 수학적으로는 다음 공식을 기반으로 동작합니다.atan(z) = (i / 2) × [ln(1 − iz) − ln(

  12. C++ STL로 구현하는 BFS(너비 우선 탐색) – 경쟁 프로그래밍을 위한 완벽 가이드

    너비 우선 탐색(BFS, Breadth First Search)은 주어진 그래프의 모든 노드를 방문하기 위해 사용되는 대표적인 그래프 순회 알고리즘입니다. 이 알고리즘은 하나의 노드를 선택한 후, 해당 노드에 인접한 모든 노드를 차례대로 방문하는 방식으로 동작합니다. 인접 정점들을 모두 처리하고 나면 다음 정점으로 이동하여 같은 과정을 반복합니다.경쟁 프로그래밍에서는 문제를 최대한 빠르게 해결해야 합니다. 따라서 C++의 STL(표준 템플릿 라이브러리)을 활용하면 BFS를 간결하고 효율적으로 구현할 수 있습니다. 이때 핵심 자료구조

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

    이 글에서는 C++에서 문자열 길이를 구할 수 있는 다섯 가지 방법을 소개합니다. C++에서는 전통적인 C 스타일의 문자 배열(char 배열) 방식과 함께, C++ 전용 string 클래스도 제공합니다. 어떤 방식의 문자열을 사용하느냐에 따라 길이를 계산하는 방법도 달라집니다.문자열 길이를 구하는 다양한 방법1. string::length() 함수C++의 string 클래스는 length() 멤버 함수를 제공합니다. 문자열 객체에 포함된 문자 수를 그대로 반환하며, 가장 직관적이고 널리 사용되는 방법입니다.2. string::siz

  14. C++로 구현하는 칵테일 정렬(Cocktail Sort) 프로그램

    칵테일 정렬(Cocktail Sort)은 버블 정렬(Bubble Sort)의 변형 알고리즘 중 하나로, 양방향 버블 정렬 또는 셰이커 정렬(Shaker Sort)이라고도 불립니다. 일반적인 버블 정렬은 항상 왼쪽에서 오른쪽 방향으로만 탐색하여 첫 번째 패스에서 가장 큰 요소를 배열의 맨 끝으로 보내고, 두 번째 패스에서 두 번째로 큰 요소를 끝에서 두 번째 위치에 배치합니다.반면 칵테일 정렬은 한 번의 반복 안에서 양방향을 번갈아 가며 순회한다는 점이 특징입니다. 먼저 왼쪽에서 오른쪽으로 스캔하여 가장 큰 값을 뒤로 밀어낸 후, 다

  15. C++로 구현하는 콤 정렬(Comb Sort) 완벽 가이드

    콤 정렬(Comb Sort)과 버블 정렬(Bubble Sort)의 기본 아이디어는 동일합니다. 즉, 콤 정렬은 버블 정렬을 개선한 알고리즘이라고 할 수 있습니다.버블 정렬에서는 각 단계마다 인접한 두 요소를 비교하지만, 콤 정렬에서는 일정한 간격(gap)을 두고 떨어져 있는 요소들을 비교합니다. 한 단계가 끝날 때마다 이 간격을 점차 줄여 나가며, 감소 계수(축소 계수, shrink factor)는 1.3입니다. 다시 말해, 각 단계가 완료될 때마다 간격을 1.3으로 나눈 값으로 갱신합니다.시간 복잡도는 최선의 경우 O(n log

  16. C++로 구현하는 그놈 정렬(Gnome Sort) 알고리즘 완벽 가이드

    이번 글에서는 그놈 정렬(Gnome Sort)의 동작 원리와 C++ 구현 방법을 자세히 살펴보겠습니다. 그놈 정렬은 비교적 간단한 구조를 가진 정렬 알고리즘으로, 삽입 정렬과 유사한 방식으로 동작합니다.그놈 정렬의 가장 큰 장점은 리스트가 이미 정렬되어 있는 경우 선형 시간에 정렬을 마친다는 점입니다. 즉, 최선의 경우 시간 복잡도는 O(n)입니다. 하지만 평균적인 경우와 최악의 경우에는 O(n²)의 시간 복잡도를 가지므로, 대량의 데이터에는 적합하지 않을 수 있습니다.그놈 정렬 알고리즘그놈 정렬의 핵심 아이디어는 다음과 같습니다.

  17. C++로 구현하는 X로 나누어 떨어지는 가장 큰 K자리 수 찾기

    이 문제에서는 주어진 수 X로 나누어 떨어지는 가장 큰 K자리 숫자를 찾는 방법을 다룹니다. 접근 방식은 매우 간단합니다. 먼저 공식 ((10k) − 1)을 이용해 가장 큰 K자리 숫자를 구한 뒤, 이 숫자가 X로 나누어 떨어지는지 확인합니다. 만약 나누어 떨어지지 않는다면 아래 공식을 사용해 정확한 답을 계산할 수 있습니다.𝑚𝑎𝑥 − (𝑚𝑎𝑥 𝑚𝑜𝑑 𝑋)동작 원리 예시예를 들어, 29로 나누어 떨어지는 가장 큰 5자리 숫자를 찾는다고 가정해 보겠습니다. 가장 큰 5자리 숫자는 99999이지만, 이 숫자는 29로

  18. C++로 구현하는 배열 범위 합계 쿼리: 누적 합(Prefix Sum)을 활용한 효율적인 방법

    이 글에서는 배열에서 인덱스 i부터 j까지의 요소 합계를 구하는 방법을 알아보겠습니다. 이를 흔히 범위 합계 쿼리(Range Sum Query)라고 부릅니다.단순 반복문 방식의 한계가장 직관적인 방법은 인덱스 i부터 j까지 반복문을 돌며 값을 하나씩 더하는 것입니다. 하지만 이런 범위 쿼리는 실제로 여러 번 반복해서 수행되는 경우가 많습니다. 매번 O(n) 시간이 걸리는 반복문을 실행하면 쿼리가 많아질수록 전체 처리 시간이 크게 늘어나 비효율적입니다.누적 합을 활용한 해결 방법이 문제를 더 효율적으로 해결하려면 누적 합(Cumula

  19. C++로 구현하는 재귀 버블 정렬 프로그램

    버블 정렬(Bubble Sort)은 가장 널리 알려진 정렬 알고리즘 중 하나로, 보통 반복문을 이용한 순차적(iterative) 방식으로 구현됩니다. 하지만 이번 글에서는 재귀(recursion)를 활용한 버블 정렬 구현 방법을 살펴보겠습니다.재귀 방식의 핵심 아이디어는 간단합니다. 한 번의 패스(pass)를 통해 배열의 가장 큰 원소를 맨 뒤로 보낸 뒤, 정렬이 완료된 마지막 원소를 제외하고 나머지 부분 배열에 대해 자기 자신을 다시 호출하는 것입니다.알고리즘bubbleRec(arr, n)begin if n = 1, ret

  20. C++로 숫자의 짝수 소인수 합 구하는 프로그램

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

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