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

C++

  1. C++로 방향 그래프의 연결 여부 확인하기

    그래프의 연결성을 확인하려면 임의의 그래프 탐색 알고리즘을 사용하여 모든 노드를 방문해 봅니다. 탐색이 종료된 후에도 방문하지 않은 노드가 하나라도 남아 있다면, 해당 그래프는 연결되어 있지 않다고 판단할 수 있습니다.방향 그래프(directed graph)의 경우에는 모든 정점을 시작점으로 삼아 각각 탐색을 수행해야 합니다. 어떤 정점은 나가는 간선(outgoing edge)만 존재하고 들어오는 간선(incoming edge)이 없을 수 있기 때문에, 다른 노드에서 출발한 탐색만으로는 해당 정점에 도달할 수 없습니다.여기서 사용하

  2. C++17 초기화 구문이 포함된 if 문 완벽 정리

    C++17에서는 기존 if 문의 문법이 확장되었습니다. 이제 if 문 자체 안에 초기화 구문(initializer)을 직접 작성할 수 있으며, 이 새로운 문법은 초기화 구문이 포함된 if 문(if statement with initializer)이라고 불립니다. 이 기능은 흔히 사용되는 코드 패턴을 단순화하고 변수의 스코프(scope)를 좁게 유지하도록 도와줍니다. 그 결과 변수가 스코프 밖으로 노출되어 발생하는 문제를 효과적으로 방지할 수 있습니다. 기존 방식(C++17 이전)의 예제 예를 들어, 주어진 숫자가 짝수인지 홀수인

  3. C++에서 문자열이 두 개의 교대 문자로만 구성되어 있는지 확인하는 방법

    이번 글에서는 C++을 사용해 주어진 문자열이 두 개의 서로 다른 문자가 번갈아 나타나는 형태인지 확인하는 방법을 살펴보겠습니다.예를 들어 XYXYXY처럼 X와 Y가 교대로 반복되는 문자열은 유효한(valid) 문자열입니다. 반면 ABCD처럼 세 개 이상의 서로 다른 문자가 사용되었거나 같은 문자가 연속으로 등장하는 경우에는 유효하지 않은(invalid) 문자열로 판단합니다.접근 방법해결 방법은 매우 간단합니다. 문자열의 모든 위치에 대해 i번째 문자와 i+2번째 문자가 동일한지 검사하면 됩니다.교대 패턴을 만족하는 문자열이라면 짝

  4. C++에서 매우 큰 숫자가 15의 배수인지 확인하는 방법

    이번 글에서는 어떤 수가 15로 나누어 떨어지는지 확인하는 방법을 알아보겠습니다. 여기서 다루는 숫자는 일반적인 정수 자료형으로 표현할 수 없을 만큼 매우 큰 숫자이기 때문에, 문자열(string) 형태로 입력받아 처리합니다.15의 배수 판별 원리어떤 수가 15의 배수라면, 그 수는 반드시 5의 배수이면서 동시에 3의 배수여야 합니다. 이 두 조건은 각각 다음과 같이 쉽게 확인할 수 있습니다.5의 배수 판별: 숫자의 마지막 자릿수가 0 또는 5인지 확인합니다.3의 배수 판별: 모든 자릿수의 합이 3으로 나누어 떨어지는지 확인합니다.

  5. C++에서 매우 큰 숫자가 11로 나누어 떨어지는지 확인하는 방법

    프로그래밍 문제를 풀다 보면 int나 long long 같은 일반적인 정수 자료형으로는 담을 수 없을 만큼 큰 숫자를 다뤄야 할 때가 있습니다. 이 글에서는 문자열 형태로 주어진 매우 큰 숫자가 11로 나누어 떨어지는지 확인하는 방법을 살펴봅니다.11의 배수 판별법11의 배수를 판별하는 대표적인 방법은 자릿수를 교대로 묶어 비교하는 것입니다. 숫자의 자릿값을 왼쪽부터 홀수 번째 자리와 짝수 번째 자리로 나눈 뒤, 각 그룹의 자릿수 합을 각각 구합니다. 두 합의 차이가 0 또는 11의 배수라면 그 숫자는 11로 나누어 떨어집니다.특히

  6. C++에서 아주 큰 숫자가 2, 3, 5로 나누어 떨어지는지 확인하는 방법

    이 글에서는 어떤 숫자가 2, 3, 5로 모두 나누어 떨어지는지 확인하는 방법을 알아봅니다. 여기서 다루는 숫자는 일반적인 정수 자료형으로 담을 수 없을 만큼 매우 큰 수이기 때문에, 문자열(string) 형태로 입력받아 처리합니다.핵심 아이디어: 최소공배수 30 활용하기어떤 수가 2, 3, 5로 모두 나누어 떨어지려면, 그 수가 반드시 2, 3, 5의 최소공배수(LCM)로도 나누어 떨어져야 합니다. 2, 3, 5의 최소공배수는 30이므로, 결국 해당 숫자가 30으로 나누어 떨어지는지만 확인하면 됩니다.30으로 나누어 떨어지는 두

  7. C++에서 매우 큰 숫자가 20으로 나누어 떨어지는지 확인하는 방법

    C++에서 매우 큰 숫자가 20으로 나누어 떨어지는지 확인하기 이번 글에서는 주어진 숫자가 20으로 나누어 떨어지는지 판별하는 방법을 살펴보겠습니다. 이 문제에서 다루는 숫자는 매우 클 수 있기 때문에 일반적인 정수형(int, long long 등)에 담을 수 없으며, 문자열(string) 형태로 입력받아 처리해야 합니다. 핵심 아이디어 어떤 수가 20으로 나누어 떨어지려면 다음 두 가지 조건을 모두 만족해야 합니다. 10으로 나누어 떨어져야 합니다. 즉, 일의 자리 숫자가 반드시 0이어야 합니다. 10으로 나눈 몫이 2로 나누어

  8. C++에서 매우 큰 수가 25로 나누어 떨어지는지 확인하는 방법

    이 글에서는 주어진 수가 25로 나누어 떨어지는지 확인하는 방법을 알아보겠습니다. 여기서 다루는 수는 일반적인 정수 자료형으로 표현할 수 없을 만큼 매우 큰 수이기 때문에, 숫자를 문자열(string) 형태로 입력받아 처리합니다.25의 배수 판별 원리어떤 수가 25로 나누어 떨어지려면 다음 조건 중 하나를 만족해야 합니다.마지막 두 자리가 00인 경우마지막 두 자리로 만든 수가 25로 나누어 떨어지는 경우 (즉, 00, 25, 50, 75)이는 100이 25의 배수이므로, 100 이상의 자릿수는 판별에 영향을 주지 않고 마지막 두

  9. C++에서 매우 큰 수가 3으로 나누어 떨어지는지 확인하는 방법

    개요프로그래밍을 하다 보면 일반적인 정수형(int, long long)으로 담을 수 없는 매우 큰 숫자가 3으로 나누어 떨어지는지 확인해야 하는 경우가 있습니다. 이런 경우에는 숫자를 문자열(string) 형태로 입력받아 처리하는 것이 효과적입니다.3의 배수 판정 원리3의 배수를 판별하는 가장 간단한 방법은 각 자릿수의 합을 이용하는 것입니다.수학적으로 어떤 수의 각 자릿수를 모두 더한 값이 3으로 나누어 떨어진다면, 그 수 자체도 반드시 3으로 나누어 떨어집니다. 이 성질은 10을 3으로 나눈 나머지가 1이라는 점에서 비롯되며,

  10. C++에서 매우 큰 숫자가 5로 나누어 떨어지는지 확인하는 방법

    이 글에서는 주어진 숫자가 5로 나누어 떨어지는지 확인하는 방법을 알아보겠습니다. 여기서 다루는 숫자는 일반적인 정수 자료형으로 표현할 수 없을 만큼 매우 큰 수이기 때문에, 숫자를 문자열(string) 형태로 저장하여 처리합니다.5의 배수 판별 원리5의 배수 판별은 의외로 간단합니다. 복잡한 나눗셈 연산을 할 필요 없이, 숫자의 마지막 자릿수가 0 또는 5인지만 확인하면 됩니다.예를 들어 10, 15, 120, 345 같은 숫자는 모두 일의 자리가 0 또는 5이며, 실제로 5로 나누어 떨어집니다. 이 성질 덕분에 아무리 큰 숫자라

  11. C++에서 큰 수가 75로 나누어떨어지는지 확인하는 방법

    프로그래밍 문제를 풀다 보면 일반적인 정수 자료형 범위를 훌쩍 넘는 매우 큰 숫자가 75로 나누어떨어지는지 확인해야 하는 경우가 있습니다. 이런 경우 숫자를 문자열(string) 형태로 처리하면 손쉽게 판별할 수 있습니다.75의 배수 판정 원리75는 3과 25의 곱(75 = 3 × 25)으로 표현할 수 있으므로, 어떤 수가 3으로도 나누어떨어지고 25로도 나누어떨어진다면 그 수는 반드시 75로 나누어떨어집니다. 각 조건은 다음과 같은 간단한 규칙으로 판별할 수 있습니다.3의 배수 판정: 모든 자릿수의 합이 3으로 나누어떨어지면, 그

  12. C++에서 매우 큰 수가 8로 나누어 떨어지는지 확인하는 방법

    개요이 글에서는 주어진 수가 8로 나누어 떨어지는지 판별하는 방법을 알아봅니다. 여기서 다루는 수는 int나 long long 같은 기본 정수 자료형으로 담기 어려울 정도로 크기 때문에, 문자열(string) 형태로 입력받아 처리합니다.핵심 아이디어어떤 수가 8로 나누어 떨어지는지 확인하는 규칙은 매우 간단합니다.수의 마지막 세 자리로 만들어진 값이 8로 나누어 떨어지면, 해당 수 전체도 8로 나누어 떨어집니다.그 이유는 다음과 같습니다. 임의의 수 N을 마지막 세 자리를 제외한 앞부분 A와 마지막 세 자리 B로 나누면 N = 10

  13. C++로 매우 큰 수가 9로 나누어 떨어지는지 확인하는 방법

    프로그래밍 문제나 실무에서 수십 자리, 수백 자리에 달하는 매우 큰 수가 9로 나누어 떨어지는지 확인해야 하는 경우가 있습니다. 이런 수는 int나 long long 같은 일반 정수 자료형으로 표현할 수 없기 때문에 문자열(string) 형태로 저장한 뒤 처리해야 합니다. 핵심 원리: 자릿수의 합 규칙 9의 배수 판정에는 널리 알려진 간단한 규칙이 있습니다. 어떤 수의 각 자릿수를 모두 더한 값이 9로 나누어 떨어지면, 그 수 자체도 9로 나누어 떨어집니다. 예를 들어 630720의 자릿수 합은 6 + 3 + 0 + 7 + 2 +

  14. C++에서 선분이 원점을 통과하는지 확인하는 방법

    이 글에서는 주어진 선분이 원점(0, 0)을 지나는지 확인하는 방법을 알아보겠습니다. 선분의 양 끝점을 나타내는 두 개의 좌표가 주어졌을 때, 이 선분이 원점을 통과하는지 여부를 판별하는 것이 목표입니다.접근 방법핵심 아이디어는 매우 간단합니다. 두 끝점을 지나는 직선의 방정식을 세운 뒤, 그 식에 (0, 0)을 대입하여 등식이 성립하는지 확인하면 됩니다. 등식이 성립한다면 해당 직선은 원점을 지난다는 의미입니다.선분의 두 끝점을 (x1, y1)과 (x2, y2)라고 하겠습니다. 이 두 점을 지나는 직선의 방정식은 다음과 같이 표현

  15. C++에서 숫자를 2^x + 2^y 형태로 표현할 수 있는지 확인하는 방법

    이 글에서는 주어진 숫자를 2의 거듭제곱 두 개의 합으로 표현할 수 있는지 확인하는 방법을 살펴봅니다. 즉, 수 N을 x, y > 0을 만족하는 (2x + 2y) 형태로 나타낼 수 있는지 검사하는 것입니다. 예를 들어 10은 23 + 21로 표현할 수 있습니다.접근 방법풀이 아이디어는 매우 간단하며, 경우의 수는 두 가지뿐입니다.첫 번째 경우, 수 n이 짝수라면 2x(x > 0) 꼴의 거듭제곱 합으로 표현할 수 있습니다. 두 번째 경우, N이 홀수라면 2의 거듭제곱들의 합으로는 절대 표현할 수 없습니다. 지수 0을 사용할

  16. C++에서 숫자가 연속된 수의 합으로 표현 가능한지 확인하는 방법

    이 글에서는 하나의 숫자를 두 개 이상의 연속된 자연수의 합으로 표현할 수 있는지 확인하는 방법을 알아봅니다. 예를 들어 12는 3 + 4 + 5로 나타낼 수 있으므로 조건을 만족하는 수입니다.이 문제는 의외로 아주 간단한 방법으로 해결할 수 있습니다. 핵심은 2의 거듭제곱인 수는 연속된 수의 합으로 절대 표현할 수 없다는 성질입니다. 반대로 말하면, 2의 거듭제곱이 아닌 모든 양의 정수는 연속된 수의 합으로 표현할 수 있습니다. 이 원리를 이해하려면 다음 두 가지 사실을 기억하면 됩니다.연속된 두 수의 합은 항상 홀수입니다. 두

  17. C++로 숫자가 a^b(정수의 거듭제곱) 형태로 표현 가능한지 확인하는 방법

    문제 개요 이번 글에서는 주어진 숫자가 ab 형태, 즉 어떤 정수의 거듭제곱으로 표현될 수 있는지 확인하는 방법을 알아보겠습니다. 예를 들어 125는 5³으로 표현할 수 있지만, 91은 어떤 정수의 거듭제곱으로도 나타낼 수 없습니다. 알고리즘 isRepresentPower(num): 시작 if num == 1이면 true 반환 i := 2부터 i² <= num까지 1씩 증가하며 반복: val := log(num) / log(i) if val의 소수 부분 < 0.0000001이면

  18. C++에서 숫자가 a^b 형태의 거듭제곱으로 표현 가능한지 확인하는 방법

    이 글에서는 주어진 숫자가 ab와 같은 거듭제곱 형태로 표현될 수 있는지 확인하는 방법을 알아보겠습니다. 예를 들어 숫자 125는 53으로 표현할 수 있지만, 91은 어떤 정수의 거듭제곱으로도 나타낼 수 없습니다.알고리즘핵심 아이디어는 간단합니다. 밑(base)이 될 수 있는 값 i를 2부터 √num까지 순회하면서, num을 i의 거듭제곱으로 나타냈을 때 지수가 정수에 가까운지 로그 함수를 이용해 검사하는 것입니다.isRepresentPower(num): Begin if num = 1, then return true

  19. C++에서 숫자가 x^y(x의 y거듭제곱) 형태로 표현 가능한지 확인하는 방법

    이번 글에서는 주어진 숫자가 xy(x의 y거듭제곱) 형태로 표현될 수 있는지 확인하는 방법을 살펴보겠습니다. 예를 들어 125는 53으로 표현할 수 있지만, 91은 어떤 정수의 거듭제곱으로도 나타낼 수 없습니다.핵심 아이디어는 로그 함수를 활용하는 것입니다. num = ik가 성립하는지 확인하려면 k = log(num) / log(i)를 계산한 뒤, 이 값이 정수에 가까운지 검사하면 됩니다.알고리즘isRepresentPower(num): 시작 만약 num = 1이면 true 반환 i := 2부터 시작하여 i * i &

  20. C++로 숫자가 두 개의 삼각수의 합으로 표현 가능한지 확인하는 방법

    이 글에서는 하나의 숫자가 두 개의 삼각수(Triangular Number)의 합으로 표현될 수 있는지 확인하는 방법을 알아보겠습니다.삼각수란?삼각수는 1부터 n까지의 자연수를 모두 더한 값으로 정의되는 수열입니다. 점을 삼각형 모양으로 배열했을 때 만들어지는 점의 개수와 같아서 삼각수라는 이름이 붙었습니다.삼각수는 다음과 같은 형태로 나타납니다.1, 3, 6, 10, 15, 21, ...n번째 삼각수는 공식 T(n) = n × (n + 1) / 2로 구할 수 있습니다. 예를 들어 1, 3, 6, 10이 대표적인 삼각수입니다.문제

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