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

C++

  1. BFS(너비 우선 탐색)로 무방향 그래프의 연결성을 확인하는 C++ 프로그램

    그래프 연결성 확인의 기본 개념 그래프가 연결되어 있는지 확인하려면 임의의 순회(traversal) 알고리즘을 사용해 모든 노드를 방문해 봅니다. 순회가 완료된 후에도 방문하지 않은 노드가 하나라도 남아 있다면, 해당 그래프는 연결되어 있지 않다고 판단할 수 있습니다. 무방향 그래프(undirected graph)의 경우에는 아무 노드나 하나 선택한 뒤, 그 노드에서부터 탐색을 시작합니다. 이 글에서는 큐(queue)를 활용한 너비 우선 탐색(BFS, Breadth-First Search)으로 연결성을 검사하는 방법을 다룹니다. 입

  2. C++로 BFS를 활용해 방향 그래프의 연결성 확인하기

    그래프의 연결성을 확인하려면 임의의 그래프 탐색 알고리즘을 사용해 모든 노드를 한 번씩 순회해 봅니다. 탐색이 끝난 후에도 방문하지 않은 노드가 하나라도 남아 있다면, 해당 그래프는 연결 그래프가 아니라고 판단할 수 있습니다. 방향 그래프(directed graph)에서는 연결성을 확인하기 위해 모든 노드를 시작점으로 삼아 탐색을 수행해야 합니다. 어떤 노드는 나가는 간선(outgoing edge)만 있고 들어오는 간선(incoming edge)이 전혀 없을 수 있기 때문에, 다른 노드에서 출발한 탐색만으로는 그 노드를 결코 방

  3. DFS를 활용해 무방향 그래프의 연결성을 확인하는 C++ 프로그램

    그래프의 연결성(connectivity)을 확인하려면 임의의 그래프 순회(traversal) 알고리즘을 사용해 모든 노드를 방문해 보면 됩니다. 순회가 끝난 뒤에도 방문되지 않은 노드가 하나라도 남아 있다면, 해당 그래프는 연결되어 있지 않은 것입니다. 기본 아이디어 무방향 그래프(undirected graph)에서는 먼저 하나의 정점을 선택한 후, 그 정점에서부터 탐색을 시작합니다. 여기서 사용하는 순회 알고리즘은 재귀적 DFS(깊이 우선 탐색)입니다. 입력 − 그래프의 인접 행렬(adjacency matrix) 011001011

  4. C++로 구현하는 Wagner-Fisher 알고리즘: 두 문자열의 최소 편집 거리 계산하기

    이 글에서는 Wagner-Fisher 알고리즘을 사용하여 두 개의 문자열을 비교하는 방법을 알아봅니다. 이 알고리즘을 활용하면 두 문자열이 서로 일치하도록 만들기 위해 필요한 최소 변경 횟수(문자 삽입, 삭제, 치환)를 구할 수 있습니다. Wagner-Fisher 알고리즘은 동적 계획법(Dynamic Programming)에 기반한 접근 방식으로, 두 문자열 사이의 레벤슈타인 거리(Levenshtein Distance), 즉 한 문자열을 다른 문자열로 변환하는 데 필요한 최소 편집 연산 횟수를 측정합니다. 입력: 두 문자열 Supp

  5. C++ 문자열 라이브러리를 활용한 부분 문자열 일치 프로그램

    C++에서는 표준 문자열 라이브러리의 함수들을 활용하여 손쉽게 문자열 일치(matching) 작업을 수행할 수 있습니다. 이 글에서는 find() 함수를 사용해 메인 문자열 안에서 특정 부분 문자열(substring)이 나타나는 모든 위치를 찾는 방법을 살펴봅니다.find() 함수는 해당 문자열이 처음으로 발견된 위치를 반환합니다. 따라서 이 함수를 반복적으로 호출하면 문자열 내의 모든 일치 지점을 찾아낼 수 있습니다. 만약 문자열을 찾았다면 그 위치(index)를 반환하고, 찾지 못했다면 string::npos를 반환합니다.입력:

  6. C++에서 대소문자를 구분하지 않고 문자열 비교하는 방법

    C++ 표준 라이브러리는 문자열을 다루기 위한 다양한 기능을 제공합니다. 이 글에서는 두 개의 문자열이 동일한지 확인하는 방법을 살펴보겠습니다. 특히 대소문자 차이는 무시하고 비교하는 방법을 다룹니다.핵심 로직은 매우 간단합니다. 두 문자열을 모두 소문자(또는 대문자)로 변환한 뒤 서로 비교하고, 그 결과를 반환하면 됩니다. 이렇게 하면 Hello와 HELLO처럼 대소문자만 다른 문자열도 같은 문자열로 판단할 수 있습니다.여기서는 <algorithm> 헤더에 포함된 transform 함수를 사용하여 문자열 전체를 소문자로

  7. C++에서 문자열에 특정 부분 문자열이 포함되어 있는지 확인하는 방법

    이 글에서는 C++의 string 라이브러리 함수를 활용하여 메인 문자열 안에 부분 문자열이 포함되어 있는지 확인하고, 해당 부분 문자열이 나타나는 모든 위치를 찾는 방법을 살펴봅니다.find() 함수를 이용한 부분 문자열 검색C++ 표준 라이브러리에서 제공하는 find() 함수를 사용하면 메인 문자열 내에서 부분 문자열이 등장하는 위치를 손쉽게 찾을 수 있습니다. find() 함수는 문자열이 처음 발견된 위치(인덱스)를 반환하며, 두 번째 인자로 검색 시작 위치를 지정할 수 있습니다.검색 결과가 존재하면 해당 위치가 반환되지만,

  8. C++에서 정수를 16진수 문자열로 변환하는 방법

    이 글에서는 C++에서 정수를 16진수 문자열로 변환하는 방법을 알아봅니다. 수학적인 계산 과정을 직접 구현할 수도 있지만, 여기서는 훨씬 간단한 방법을 사용해 문제를 해결해 보겠습니다.핵심 아이디어: %X 형식 지정자C/C++에는 %X라는 형식 지정자(format specifier)가 있습니다. 이 지정자는 변수의 값을 16진수 형태로 출력해 주며, sprintf() 함수와 함께 사용하면 숫자를 손쉽게 문자열로 변환할 수 있습니다.입력: 정수 255 출력: FF알고리즘1단계: 사용자로부터 숫자를 입력받는다. 2단계: %X 형식 지

  9. C++에서 숫자 문자열을 정수로 변환하는 방법

    C++에서는 숫자로 이루어진 문자열을 정수(int) 타입의 데이터로 변환해야 하는 경우가 자주 발생합니다. 이 문제는 표준 라이브러리에서 제공하는 atoi() 함수를 사용하면 간단하게 해결할 수 있습니다. atoi() 함수는 문자열을 입력으로 받아 정수 데이터로 변환하는 역할을 합니다. 함수 이름의 atoi는 ASCII to Integer를 의미하며, 문자 형태로 표현된 숫자를 실제 정수 값으로 바꿔줍니다. 이 함수는 <cstdlib> 헤더 파일에 선언되어 있으므로, 사용하기 전에 반드시 해당 헤더를 포함해야 합니다.

  10. C++에서 문자열을 숫자로, 숫자를 문자열로 변환하는 방법

    이 글에서는 C++에서 문자열을 숫자로 변환하는 방법과, 반대로 숫자를 문자열로 변환하는 방법을 알아보겠습니다. 먼저 문자열을 숫자로 변환하는 방법부터 살펴보겠습니다.문자열을 숫자로 변환하기숫자로 이루어진 문자열을 정수형 데이터로 변환하는 방법입니다. 이 문제는 atoi() 함수를 사용하면 간단하게 해결할 수 있습니다. atoi() 함수는 문자열을 입력으로 받아 정수형 데이터로 변환해 줍니다.atoi() 함수는 <cstdlib> 헤더 파일에 포함되어 있습니다.입력: 숫자 문자열 1234 출력: 1234알고리즘1단계: 숫자

  11. C++ 문자열에서 모든 정수를 추출하는 방법

    이 글에서는 C++에서 문자열에 포함된 모든 정수를 추출하는 방법을 알아보겠습니다. 숫자와 숫자가 아닌 문자가 섞여 있는 문자열이 주어졌을 때, 그 안의 모든 숫자 값을 추출하는 것이 목표입니다.이 문제를 해결하기 위해 C++의 stringstream 클래스를 활용합니다. 문자열을 단어 단위로 분리한 뒤, 각 단어를 정수형 데이터로 변환을 시도합니다. 변환이 성공하면 해당 단어는 정수이므로 그 값을 출력하면 됩니다.입력: 숫자가 포함된 문자열 Hello 112 World 35 75 출력: 112 35 75알고리즘1단계: 숫자가 포함

  12. C++로 임의의 영숫자 문자열을 생성하는 방법

    이 글에서는 C++를 사용하여 임의의 영숫자(alphanumeric) 문자열을 생성하는 방법을 알아봅니다. 여기서 사용할 문자 집합은 소문자(a-z), 대문자(A-Z), 그리고 숫자(0-9)로 구성됩니다. 프로그램은 이 문자들 중에서 무작위로 선택하여 원하는 길이의 랜덤 문자열을 만들어냅니다.입력: 문자열 길이를 지정합니다출력: 해당 길이의 랜덤 문자열 (예: XSme6VAsvJ)알고리즘1단계: 대문자, 소문자, 숫자를 모두 담는 배열(문자열 상수)을 정의합니다2단계: 사용자로부터 원하는 길이 n을 입력받습니다3단계: n번 반복하면

  13. C++에서 std::string과 int를 연결하는 방법 완벽 가이드

    C++ 프로그래밍에서 문자열(std::string)과 정수(int) 타입의 데이터를 하나로 합쳐야 하는 경우가 자주 발생합니다. 이 글에서는 stringstream을 활용해 정수를 문자열로 변환한 뒤, 두 데이터를 연결하는 방법을 단계별로 알아보겠습니다.왜 변환이 필요한가?C++에서는 서로 다른 타입의 데이터를 + 연산자로 직접 연결할 수 없습니다. 따라서 정수를 먼저 문자열로 변환한 후에야 문자열과 이어 붙일 수 있습니다. stringstream은 숫자나 문자열을 받아 문자열 형태로 만들어 주는 편리한 기능을 제공합니다.입력: 문

  14. C++에서 한 줄로 여러 문자열을 연결하는 방법

    이 글에서는 C++에서 여러 개의 문자열을 한 줄로 연결하는 다양한 방법을 살펴봅니다. 가장 간단하고 널리 사용되는 방법은 더하기(+) 연산자를 활용하는 것입니다. 두 문자열 사이에 + 기호를 넣기만 하면 손쉽게 하나의 문자열로 합칠 수 있습니다.입력: 문자열 str1, str2, str3 출력: 연결된 문자열 str1str2str3알고리즘1단계: 여러 개의 문자열을 준비한다 2단계: 문자열 사이에 + 기호를 넣어 연결한다 3단계: 연결된 문자열을 출력한다 4단계: 종료한다예제 코드#include <iostream> us

  15. C++에서 쉼표로 구분된 std::string 문자열 파싱 방법

    C++ 프로그래밍을 하다 보면 쉼표(,)로 구분된 하나의 긴 문자열을 개별 항목으로 나누어야 하는 경우가 자주 발생합니다. 예를 들어 CSV 형식의 데이터나 사용자 입력을 처리할 때가 대표적입니다. 이번 글에서는 getline() 함수와 stringstream을 활용해 쉼표로 구분된 문자열을 파싱하고, 그 결과를 vector 객체에 저장하는 방법을 단계별로 살펴보겠습니다. getline() 함수란? 문자열을 분리할 때는 getline() 함수를 사용합니다. 이 함수의 기본 문법은 다음과 같습니다. getline(input_str

  16. C++에서 문자열의 모든 문자를 하나씩 순회하는 방법

    이 글에서는 C++에서 문자열(string)에 포함된 모든 문자를 하나씩 순회하는 방법을 알아보겠습니다. 문자열의 각 문자를 반복 처리하려면 0부터 (문자열 길이 - 1)까지 반복문을 실행하면 됩니다.특정 위치의 문자에 접근하는 방법은 두 가지가 있습니다. 첫 번째는 첨자 연산자 []를 사용하는 것이고, 두 번째는 string 객체가 제공하는 at() 함수를 사용하는 것입니다. at() 함수는 잘못된 인덱스 접근 시 예외를 발생시키므로 안전성 측면에서 유리합니다.입력: 문자열 Hello World 출력: Hello World알고리즘

  17. C++ 원시 문자열 리터럴(Raw String Literal) 완벽 정리

    C++11부터 원시 문자열(Raw String)이라는 개념이 도입되었습니다. 일반 문자열에서는 \n, \t 같은 이스케이프 시퀀스가 특별한 의미를 갖습니다. 예를 들어 \n은 커서를 다음 줄로 이동시키고, \t는 탭(tab) 공백을 생성합니다.하지만 때로는 이러한 이스케이프 문자의 효과를 적용하지 않고, 문자 그대로 화면에 출력해야 하는 경우가 있습니다. 이럴 때 원시 문자열 모드를 사용하면 됩니다. 문자열 앞에 R을 붙이면 해당 문자열이 원시 문자열로 처리되어, 내부의 모든 문자가 있는 그대로 해석됩니다.입력: 문자열 Hello\

  18. C++ std::string에서 공백 제거하기 – remove() 함수 활용법

    이 글에서는 C++에서 std::string에 포함된 공백 문자를 제거하는 방법을 살펴봅니다. 공백 제거에는 STL의 remove() 함수를 활용합니다. 이 함수는 반복자(iterator)의 시작과 끝을 첫 번째·두 번째 인수로 받고, 세 번째 인수로 전달된 값(여기서는 공백 문자 )을 해당 범위에서 제거합니다.입력: This is C++ Programming Language 출력: ThisisC++ProgrammingLanguage알고리즘대상 문자열을 준비합니다.remove() 함수를 사용하여 문자열에서 공백을 제거합니다.결과

  19. C++ 문자열에서 앞자리 0 제거하는 방법

    이 글에서는 C++에서 문자열에 포함된 앞자리 0(선행 0)을 제거하는 방법을 알아봅니다. 실제 개발에서는 00023054처럼 숫자 문자열 앞에 불필요한 0이 붙어 있는 경우가 종종 발생합니다. 프로그램을 실행하면 23054만 남게 되어, 맨 앞의 모든 0이 깔끔하게 제거됩니다.입출력 예시입력: 앞자리 0이 포함된 문자열 000023500124 출력: 23500124알고리즘전체 로직은 매우 단순합니다. 다음 네 단계로 구성됩니다.1단계: 문자열을 입력받는다. 2단계: 앞자리 0의 개수(n)를 센다. 3단계: 문자열 시작 부분에서 n

  20. C++에서 문자열의 일부를 다른 문자열로 교체하는 방법

    이 글에서는 C++에서 문자열의 일부를 다른 문자열로 교체하는 방법을 알아봅니다. C++에서는 string.replace() 함수를 사용하면 문자열 교체 작업을 아주 간단하게 처리할 수 있습니다.다만 주의할 점은 replace() 함수가 일치하는 첫 번째 항목만 교체한다는 것입니다. 따라서 문자열 내의 모든 일치 항목을 교체하려면 반복문과 함께 사용해야 합니다. 이 함수는 세 가지 인자를 받습니다.시작 인덱스: 교체를 시작할 위치길이: 교체 대상 문자열의 길이새 문자열: 기존 문자열 대신 삽입할 문자열입력 및 출력 예시입력: 문자열

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:32/300  20-컴퓨터/Page Goto:1 26 27 28 29 30 31 32 33 34 35 36 37 38