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

C++

  1. C++ 이중 연결 리스트에서 노드 삭제하는 방법

    이 튜토리얼에서는 C++를 사용하여 이중 연결 리스트(doubly linked list)에서 노드를 삭제하는 방법을 알아보겠습니다. 문제 해결 단계 데이터(data)와 prev, next 포인터를 가지는 구조체(struct)를 정의합니다. 새로운 노드를 이중 연결 리스트에 삽입하는 함수를 작성합니다. 더미(dummy) 데이터를 사용해 이중 연결 리스트를 초기화합니다. 삭제할 노드를 지정합니다. 노드를 삭제하는 함수를 작성합니다. 삭제 시에는 아래의 세 가지 경우를 반드시 고려해야 합니다. 헤드(head) 노드인 경우: 헤드 포

  2. C++ 단일 연결 리스트에서 소수가 아닌 노드 모두 삭제하기

    이 튜토리얼에서는 C++를 사용해 단일 연결 리스트(Singly Linked List)에서 소수(prime)가 아닌 노드를 모두 삭제하는 방법을 알아봅니다. 예제 코드와 함께 단계별로 차근차근 살펴보겠습니다.문제 해결 접근 방식문제를 해결하기 위한 전체적인 흐름은 다음과 같습니다.데이터(data)와 다음 노드를 가리키는 포인터(next)를 가지는 구조체(struct)를 작성합니다.단일 연결 리스트에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 연결 리스트를 초기화합니다.연결 리스트를 순회하면서 현재 노드의 데이터가

  3. C++로 이중 연결 리스트에서 모든 소수 노드 삭제하기

    이 튜토리얼에서는 이중 연결 리스트(Doubly Linked List)에서 데이터 값이 소수인 노드를 모두 찾아 삭제하는 방법을 알아보겠습니다.문제 해결 접근 방식문제를 해결하기 위한 전체적인 흐름은 다음과 같습니다.데이터(data)와 prev, next 포인터를 가지는 구조체(struct)를 정의합니다.이중 연결 리스트에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 이중 연결 리스트를 초기화합니다.리스트를 순회하면서 현재 노드의 데이터가 소수인지 판별합니다.현재 데이터가 소수라면 해당 노드를 삭제합니다.노드 삭제

  4. C++ 단일 연결 리스트에서 소수 노드 모두 삭제하는 방법

    이 튜토리얼에서는 단일 연결 리스트(Singly Linked List)에서 소수(prime) 값을 가진 노드를 모두 삭제하는 방법을 알아보겠습니다.먼저 문제를 해결하기 위한 전체적인 흐름을 살펴보겠습니다.문제 해결 단계데이터(data)와 다음 노드 포인터(next)를 가지는 구조체(struct)를 정의합니다.단일 연결 리스트에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 단일 연결 리스트를 초기화합니다.연결 리스트를 처음부터 끝까지 순회하며, 현재 노드의 데이터가 소수인지 판별합니다.현재 데이터가 소수라면 해당 노드

  5. C++ 이중 연결 리스트에서 짝수 노드 모두 삭제하기

    이 튜토리얼에서는 C++로 작성된 이중 연결 리스트(Doubly Linked List)에서 데이터가 짝수인 모든 노드를 삭제하는 방법을 알아보겠습니다.문제를 해결하는 단계는 다음과 같습니다.데이터(data)와 prev, next 포인터를 가지는 구조체(struct)를 정의합니다.노드를 이중 연결 리스트에 삽입하는 함수를 작성합니다.더미 데이터로 이중 연결 리스트를 초기화합니다.이중 연결 리스트를 순회하면서 현재 노드의 데이터가 짝수인지 확인합니다.현재 데이터가 짝수라면 해당 노드를 삭제합니다.노드를 삭제하는 함수를 별도로 작성합니다

  6. C++로 이중 연결 리스트에서 주어진 값보다 작은 노드 모두 삭제하는 방법

    개요이번 튜토리얼에서는 이중 연결 리스트(Doubly Linked List)에서 주어진 값보다 작은 데이터를 가진 노드를 모두 삭제하는 방법을 알아보겠습니다.문제 해결 과정은 다음과 같습니다.데이터(data)와 prev, next 포인터를 포함하는 구조체(struct)를 정의합니다.이중 연결 리스트에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 이중 연결 리스트를 초기화합니다.리스트를 순회하면서 현재 노드의 데이터가 주어진 값보다 작은지 확인합니다.현재 노드의 데이터가 기준값보다 작다면 해당 노드를 삭제합니다.노드

  7. C++ 이중 연결 리스트에서 주어진 값보다 큰 모든 노드 삭제하기

    이 튜토리얼에서는 C++을 사용해 이중 연결 리스트(Doubly Linked List)에서 주어진 값보다 큰 데이터를 가진 모든 노드를 삭제하는 방법을 알아봅니다.문제 해결 접근 방식아래 단계를 따라 문제를 해결할 수 있습니다.정수형 데이터와 prev, next 포인터를 멤버로 가지는 구조체(struct)를 정의합니다.이중 연결 리스트의 앞쪽에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 이중 연결 리스트를 초기화합니다.리스트를 처음부터 끝까지 순회하면서 현재 노드의 데이터가 주어진 값(K)보다 큰지 확인합니다.조건

  8. C++ 연결 리스트에서 x보다 큰 모든 노드 삭제하기

    개요 이 튜토리얼에서는 C++를 사용하여 단일 연결 리스트(Singly Linked List)에서 값이 x보다 큰 모든 노드를 삭제하는 방법을 알아봅니다. 리스트를 처음부터 끝까지 한 번만 순회하며 조건에 맞는 노드를 제거하면 되므로, 시간 복잡도는 O(n), 공간 복잡도는 O(1)입니다. 그럼 문제 해결 과정을 단계별로 살펴보겠습니다. 문제 해결 단계 노드 구조체 정의: 데이터(data)와 다음 노드를 가리키는 포인터(next)를 멤버로 갖는 구조체를 작성합니다. 노드 삽입 함수 작성: 새 노드를 생성해 단일 연결 리스트에 삽입

  9. C++ 연결 리스트에서 교대 노드 삭제하기

    이 튜토리얼에서는 C++를 사용하여 단일 연결 리스트(singly linked list)에서 교대 노드(alternate node), 즉 두 번째, 네 번째처럼 한 칸씩 건너뛰며 위치한 노드들을 삭제하는 방법을 배워보겠습니다.문제 해결 접근 방식문제를 해결하기 위한 단계는 다음과 같습니다.데이터(data)와 다음 노드 포인터(next)를 멤버로 갖는 구조체(struct)를 정의합니다.단일 연결 리스트에 새 노드를 삽입하는 함수를 작성합니다.테스트용 더미 데이터로 연결 리스트를 초기화합니다.연결 리스트를 순회하면서 이전 노드(prev

  10. C++에서 배열이 스택 정렬 가능한지 확인하는 방법

    1부터 n까지의 서로 다른 고유한 원소로 구성된 배열 nums가 있다고 가정해 보겠습니다. 이 배열의 원소들을 임시 스택 하나를 거쳐 다른 배열에 옮겨 담을 때, 결과 배열이 정렬된 상태가 될 수 있다면 그 배열은 스택 정렬 가능(stack sortable)하다고 말합니다. 이 글에서는 C++로 주어진 배열이 스택 정렬 가능한지 판별하는 방법을 알아보겠습니다.사용할 수 있는 연산스택 정렬 가능 여부를 확인할 때는 아래 두 가지 연산만 사용할 수 있습니다.배열 → 스택: 배열의 맨 앞 원소를 삭제하고, 그 원소를 스택에 push합니다

  11. C++로 간격 집합에서 두 구간이 서로 겹치는지 확인하기

    어떤 이벤트의 시작 시간과 종료 시간을 나타내는 값 쌍 (time1, time2)으로 구성된 간격(interval) 집합이 주어졌다고 가정해 봅시다. 우리가 해야 할 일은 이 집합 안에서 서로 겹치는 간격이 하나라도 존재하는지 확인하는 것입니다. 만약 겹치는 간격이 있다면 True를 반환하고, 그렇지 않다면 False를 반환합니다.예를 들어 입력이 [(4,7), (5,11), (7,11), (5,8)]이라면 출력 결과는 True가 됩니다.문제 해결 접근 방법이 문제는 정렬을 활용하면 매우 효율적으로 해결할 수 있습니다. 핵심 아이디

  12. C++에서 반복 문자열 내 특정 문자의 등장 횟수 구하기

    문제 개요문자열 str, 한 개의 문자, 그리고 양의 정수 N이 주어졌다고 가정해 봅시다. 이때 문자열 str은 무한히 반복된다고 하며, 우리가 구해야 할 값은 반복되는 문자열의 처음 N개 문자 안에서 주어진 문자가 총 몇 번 등장하는지입니다.예를 들어 str이 abac이고, 찾으려는 문자가 b, N이 10이라고 해보겠습니다. abacabacabac…에서 처음 10개 문자에는 b가 두 번 등장합니다.참고 − str과 문자 ch는 서로 같은 대소문자 체계(모두 대문자 또는 모두 소문자)로 주어진다고 가정합니다.예제로 이해하기입력str

  13. C++로 배열 요소와 주어진 숫자의 평균값 등장 횟수 계산하기

    정수 요소로 구성된 배열 arr[]와 하나의 정수 num이 주어졌을 때, 각 요소 arr[i]와 num의 평균값을 구하고, 그 평균값이 원래 배열 arr[] 안에서 몇 번 나타나는지 그 횟수를 출력하는 것이 이 문제의 목표입니다.예를 들어 배열 arr[]가 [5, 2, 3]이고 num이 2라면, 각 평균값은 [3, 2, 2]가 되고, 이 값들이 arr[]에 등장하는 횟수는 [1, 1, 1]입니다.예시입력arr[] = { 1, 6, 4, 3, 6, 4 }num = 2출력1 2 1 0 2 1주어진 숫자와 배열 요소의 평균값이 등장한 총

  14. C++에서 곱이 주어진 값 x와 같은 정렬된 이중 연결 리스트의 세 쌍 개수 구하기

    문제 소개정수 값들을 담고 있는 정렬된 이중 연결 리스트(sorted doubly linked list)가 주어졌을 때, 세 노드 값의 곱이 주어진 값 x와 같아지는 세 쌍(triplet)의 개수를 찾는 것이 목표입니다.예를 들어 연결 리스트가 3 → 4 → 1 → 2이고 x = 6이라면, (3, 1, 2)의 곱이 6이므로 조건을 만족하는 세 쌍은 1개입니다.예제예제 1입력:linked list: [ 200 → 4 → 16 → 5 → 10 → 10 → 2 ], x = 200출력:곱이 x와 같은 세 쌍의 개수: 3설명: 조건을 만족하

  15. C++에서 주어진 값 x와 합이 같은 정렬된 이중 연결 리스트의 트리플렛 개수 세기

    문제 소개 정수 값으로 구성된 정렬된 이중 연결 리스트가 주어졌을 때, 서로 다른 세 노드의 데이터 합이 주어진 값 x와 같아지는 트리플렛(triplet)의 개수를 구하는 것이 목표입니다. 예를 들어 연결 리스트가 3−4−1−2이고 x가 6이라면, 트리플렛 (3, 1, 2)의 합이 6이므로 개수는 1이 됩니다. 예제 1 입력: linked list: [ 3−4−13−5−10−10−0 ], x = 20 출력: 합이 주어진 값 x와 같은 정렬된 이중 연결 리스트의 트리플렛 개수: 2 설명: 조건을 만족하는 트리플렛은 (3, 4, 13

  16. C++에서 1 더하기·후행 0 제거 연산으로 N에서 만들 수 있는 고유 숫자 개수 구하기

    문제 개요 숫자 N이 입력으로 주어졌을 때, N에 아래 두 가지 연산을 반복적으로 적용한 후 그 과정에서 생성되는 고유한 숫자의 개수를 구하는 것이 목표입니다. 연산 1: 현재 숫자에 1을 더합니다. 연산 2: 결과 숫자 끝에 붙은 0(후행 0)이 있다면 모두 제거합니다. 동작 예시: N = 8 연산 1 적용: 8 → 9 연산 2 적용: 9 + 1 = 10 → 1 (10에서 후행 0 제거) 이후에는 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 순서로 진행되며 처음과 동일한 수열이 반복됩니다. 따라서 생성되는 고유한 숫자

  17. C++에서 특정 범위 내 단항(Unary) 수 개수 구하기

    두 정수 start와 end로 표현되는 범위가 주어졌을 때, 이 구간 [start, end] 안에 존재하는 단항 수(Unary Number)의 개수를 구하는 것이 이번 글의 목표입니다. 어떤 수가 단항 수인지 확인하는 방법은 간단합니다. 각 자릿수의 제곱의 합을 구하고, 그 결과에 대해 같은 과정을 반복했을 때 최종적으로 1에 도달하는지 검사하면 됩니다. 예를 들어 숫자 13을 살펴보겠습니다. 1² + 3² = 10 → 1² + 0² = 1반복 계산의 최종 합이 1이 되므로 13은 단항 수입니다. 입력·출력 예시 예시 1 sta

  18. C++로 숫자의 팩토리얼에서 후행 0 개수 구하기

    정수 하나가 입력으로 주어지며, 목표는 그 숫자의 팩토리얼(계승)을 계산했을 때 결과값 뒤에 붙는 0의 개수를 구하는 것입니다. 숫자 N의 팩토리얼은 [1, N] 범위에 속하는 모든 정수의 곱으로 정의됩니다.후행 0이 만들어지는 원리어떤 수의 끝자리에 0이 붙으려면 그 수가 10의 배수여야 하며, 이는 곧 소인수로 2와 5의 짝을 가진다는 의미입니다. 5보다 큰 수의 팩토리얼을 소인수분해해 보면 2의 개수가 항상 5의 개수보다 많습니다. 따라서 숫자를 5의 거듭제곱으로 나누어 보면 인수 중 5의 개수를 알 수 있고, 이 5의 개수가

  19. C++로 N개의 교차하지 않는 현(Chord)으로 원을 나누는 방법의 수 구하기

    문제 소개정수 N이 입력으로 주어질 때, 원 위에는 현(chord)의 양 끝이 될 수 있는 2×N개의 점이 존재합니다. 목표는 이 현들을 이용해 원을 나누되, 어떤 두 현도 서로 교차하지 않도록 만드는 경우의 수를 구하는 것입니다.예를 들어 N=3이라면 원 위의 점은 총 6개가 됩니다. 3개의 현을 그리는 한 가지 방법은 1−2, 3−4, 5−6을 잇는 것입니다.그 외에 가능한 조합은 다음과 같습니다.1−6, 2−5, 3−41−2, 3−6, 4−51−4, 2−3, 5−61−6, 2−3, 4−5따라서 가능한 방법은 모두 5가지입니다.

  20. C++로 정수 n을 홀수의 합으로 표현하는 경우의 수 구하기

    정수 n이 입력으로 주어졌을 때, n을 홀수 정수들의 합으로 표현할 수 있는 경우의 수를 구하는 것이 목표입니다. 예를 들어 n이 3이라면 (1+1+1)과 (3) 두 가지 방법으로 표현할 수 있으므로 총 2가지입니다.예제 1입력n = 6출력정수 n을 홀수의 합으로 표현하는 방법의 수: 8설명n=6을 홀수의 합으로 표현하는 방법은 다음과 같습니다.1. 1+1+1+1+1+1 2. 3+1+1+1 3. 1+3+1+1 4. 1+1+3+1 5. 1+1+1+3 6. 3+3 7. 1+5 8. 5+1예제 2입력n = 9출력정수 n을 홀수의 합으로

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:239/300  20-컴퓨터/Page Goto:1 233 234 235 236 237 238 239 240 241 242 243 244 245