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

C++

  1. C++로 단일 연결 리스트의 꼬리(마지막) 노드 삭제하기

    단일 연결 리스트란?연결 리스트(Linked List)는 선형 자료구조로, 여러 개의 노드로 구성됩니다. 각 노드는 두 개의 필드를 가지는데, 하나는 리스트에 저장할 값(데이터)이고, 다른 하나는 다음 노드의 주소를 저장하는 포인터입니다.문제 정의이번에 다룰 과제는 연결 리스트의 마지막 노드(꼬리 노드)를 삭제하는 것입니다. 만약 연결 리스트가 비어 있다면 NULL을 반환해야 합니다.예시를 통해 살펴보겠습니다.입력 1 − 1 → 2 → 3 → 4 → 5출력 − 1 → 2 → 3 → 4 →설명 − 주어진 단일 연결 리스트의 마지막 노

  2. C++로 문자열의 모든 문자가 대문자인지 확인하는 방법

    문자열 str에 여러 개의 문자가 포함되어 있다고 가정해 보겠습니다. 이때 주어진 문자열의 모든 문자가 대문자인지 아닌지를 검사하고, 그 결과를 True 또는 False로 반환하는 것이 과제입니다.입력 및 출력 예시입력 1 −str = INDIA출력 −True설명 − 입력 문자열의 모든 문자가 대문자이므로, 이 경우 true를 반환합니다.입력 2 −str = Programmer출력 −False설명 − 첫 글자를 제외한 나머지 문자들이 대문자가 아니므로, 이 경우 fal

  3. C++로 문자열에서 첫 번째 고유 문자의 인덱스 찾기: 해시맵 활용 방법

    문제 개요주어진 문자열 s에서 반복되지 않는 첫 번째 고유 문자를 찾아 그 인덱스를 반환하는 것이 이번 문제의 목표입니다. 만약 고유한 문자가 하나도 존재하지 않는다면 -1을 반환합니다.입력 예시 1s = tutorialspoint출력:1설명: 문자열 tutorialspoint에서 반복되지 않는 첫 번째 고유 문자는 u이며, 그 인덱스는 1입니다. 따라서 1을 결과로 반환합니다.입력 예시 2s = aaasttarrs출력:-1설명: 문자열 aaasttarrs의 모든 문자(a, s, t, r)가 두 번 이상 등장하므로 고유한 문자가 존

  4. C++로 단일 연결 리스트의 뒤에서 K번째 노드 찾기

    연결 리스트(Linked List)는 여러 개의 노드가 서로 연결되어 있는 선형 자료구조입니다. 각 노드는 데이터 필드와 다음 노드의 주소, 두 부분으로 구성됩니다. 이번 글에서는 주어진 단일 연결 리스트(singly linked list)에서 뒤에서 k번째 노드를 찾는 방법을 알아보겠습니다.문제 예시입력 −1→2→3→4→7→8→9 K = 4출력 −뒤에서 4번째 위치의 노드 − 4설명 − 주어진 단일 연결 리스트에서 뒤에서 4번째 노드는

  5. C++로 합이 0이 되는 가장 긴 부분 배열의 길이 찾기

    N개의 정수로 이루어진 배열이 주어졌을 때, 합이 0이 되는 부분 배열(subarray) 중 가장 긴 것의 길이를 구하는 것이 목표입니다. 만약 합이 0이 되는 부분 배열이 존재하지 않는다면 0을 반환해야 합니다.입력-1 −N = 8 A[ ] = {15, -5, -1, 5, 1, 4}출력 −4설명 − 합이 0이 되는 가장 긴 부분 배열은 {-5, -1, 5, 1}이며, 그 길이는 4입니다.입력-2 −N = 5 A[ ] = {3, 2, 4, 8, -1}출력 −0설명 −

  6. C++로 정렬되지 않은 정수 배열에서 최댓값과 두 번째 최댓값 찾기

    문제 개요 크기가 N인 정렬되지 않은 정수 배열이 주어졌다고 가정해 봅시다. 이때 우리가 해야 할 일은 배열에 존재하는 서로 다른(중복되지 않은) 최댓값과 두 번째 최댓값을 찾는 것입니다. 배열에는 중복된 요소가 포함될 수 있으므로, 반드시 고유한 값만을 대상으로 삼아야 합니다. 입력 예시 1 − N = 5 A[ ] = { 2, 2, 1, 3, 4 } 출력 − 4 3 설명 − 주어진 배열에서 4가 최댓값이고, 3이 두 번째 최댓값임을 알 수 있습니다. 입력 예시 2 − N = 4 A[

  7. C++로 정렬되지 않은 정수 배열에서 누락된 양수 찾기

    정렬되지 않은 정수로 구성된 배열이 하나 주어져 있다고 가정해 보겠습니다. 우리가 해결해야 할 과제는 이 배열에서 [0부터 n] 범위 안의 숫자 중 실제로 존재하지 않는 양의 정수, 즉 누락된 숫자를 찾아내는 것입니다. 예시로 이해하기 입력-1 N = 9 arr = [0, 2, 5, 9, 1, 7, 4, 3, 6] 출력 8 설명 − 주어진 정렬되지 않은 배열에는 0부터 9까지의 숫자 중 8만 빠져 있으므로, 출력값은 8이 됩니다. 입력-2 N = 1 arr = [0] 출력 1 설명 − 크기가 1인 배열 [0]에는 0만 존재하므

  8. C++로 정수 배열에서 가장 많이 등장하는 요소 찾는 방법

    크기가 N인 정수 배열이 주어졌을 때, 배열 안에서 가장 자주 등장하는 요소(최빈값)를 찾아야 하는 문제입니다. 예제를 통해 살펴보겠습니다.입력-1 −N = 8 A[ ] = {1,2,4,3,3,1,1,5}출력 −1설명 − 주어진 정수 배열에서 가장 많이 등장하는 숫자는 1입니다. 따라서 출력 결과는 1이 됩니다.입력-2 −N = 6 A[ ] = {1,4,4,4,1,1}출력-a −1출력-b −4설명: 이 배열에서는 1과 4가 각각 3번씩 등장하여 최빈값이 두 개입니다. 이 경우 둘 중 어느 하나를 출력해도 정답으로 인정됩니다.문제 해

  9. C++로 정수 배열에서 최빈 상위 K개 요소 찾기: 해시맵과 정렬 활용

    크기가 N인 정수 배열과 키 K가 주어졌을 때, 배열에서 등장 빈도가 가장 높은 상위 K개의 요소를 찾아 출력하는 것이 이번 문제의 목표입니다. 아래 예시를 통해 문제를 살펴보겠습니다.문제 예시예시 1입력N = 6K = 2arr[ ] = {1, 1, 1, 2, 2, 3}출력1 2설명: 주어진 배열에서 빈도수가 가장 높은 상위 K=2개의 요소는 {1, 2}입니다. 1은 세 번, 2는 두 번 등장합니다.예시 2입력N = 2K = 1arr[ ] = {1, 2}출력1설명: 모든 요소의 빈도가 같을 경우, 조건을 만족하는 요소 중 하나인 {

  10. C++로 정렬된 0과 1 배열에서 전환점(첫 번째 '1'의 위치) 찾기

    0과 1만으로 이루어진 정렬된 배열이 주어졌을 때, 전환점(Transition Point)을 찾는 문제입니다. 여기서 전환점이란 배열에서 처음으로 1이 등장하는 인덱스를 의미합니다. 다음 예시를 통해 살펴보겠습니다. 입력-1 − N = 6 arr[ ] = {0,0,0,0,1,1} 출력 − 4 설명 − 주어진 배열에서 처음 1이 나타나는 위치는 인덱스 4이므로, 결과값은 4가 됩니다. 입력-2 − N = 5 arr[ ] = {0,0,1,1,1} 출력 − 2 설명 − 위 배열에서 처음 1이 등장하는 인덱스는 2이므로, 결과값으로 2를

  11. C++로 두 문자열이 서로의 아나그램인지 확인하는 방법

    두 문자열 a와 b가 주어졌을 때, 이 두 문자열이 서로의 아나그램(anagram)인지 확인해야 합니다. 두 문자열이 서로의 아나그램이라는 것은 한 문자열이 다른 문자열과 정확히 동일한 문자들(개수까지 포함)을 가지고 있다는 의미입니다.예시입력-1 −a = anagram b = gnarama출력 −True설명 − 문자열 gnarama는 문자열 anagram과 동일한 문자들을 동일한 개수만큼 가지고 있습니다. 따라서 True를 반환합니다.입력-2 −a = programmer b = mprogretmrqp출력 −False설명 − 문자열

  12. 팬디지털 수란 무엇일까? C++로 팬디지털 수 판별하기

    팬디지털 수(Pandigital Number)란?수학에서 팬디지털 수란 주어진 진법(base)에서 그 수의 유효 숫자들 가운데 해당 진법에서 사용되는 모든 숫자가 적어도 한 번씩 포함된 정수를 말합니다.다시 말해, 어떤 진법에서 쓸 수 있는 숫자를 하나도 빠짐없이 모두 사용해 만든 정수가 바로 팬디지털 수입니다. 예를 들어 10진법에서 1234567890은 0부터 9까지 모든 숫자를 한 번씩 사용했으므로 대표적인 팬디지털 수입니다.또한 0을 제외한 나머지 숫자를 모두 사용한 수는 제로리스 팬디지털(zeroless pandigital

  13. C++로 단일 연결 리스트 맨 앞에 노드를 삽입하는 프로그램 구현하기

    연결 리스트(Linked List)는 여러 개의 노드가 서로 연결되어 있는 선형 자료구조입니다. 각 노드는 데이터 필드(Data Field)와 다음 노드의 주소라는 두 가지 요소로 구성됩니다.문제 정의단일 연결 리스트(Singly Linked List)가 주어졌을 때, 이 리스트의 맨 앞(head)에 새로운 노드를 삽입하는 것이 과제입니다.예를 들어 다음과 같은 경우를 살펴보겠습니다.입력 − 1 → 2 → 3 → 4주어진 연결 리스트의 맨 앞에 5를 삽입합니다.출력 − 5 →

  14. C++ 최대 삭제 값(Maximum Erasure Value) 문제 풀이 – 슬라이딩 윈도우 접근법

    문제 소개양의 정수로 이루어진 배열이 주어졌을 때, 모든 요소가 중복 없이 고유한(unique) 부분 배열을 하나 선택해 제거하는 문제입니다. 이때 얻는 점수는 해당 부분 배열에 포함된 요소들의 합과 같으며, 정확히 하나의 부분 배열만 제거할 때 얻을 수 있는 최대 점수를 구하는 것이 목표입니다.여기서 배열 arr이 배열 a의 부분 배열(subarray)이라는 것은, a의 연속된 일부분, 즉 임의의 인덱스 (l, r)에 대해 a[l], a[l+1], ..., a[r]과 동일함을 의미합니다.예제 1arr[ ] = { 1,2,4,5,6

  15. C++로 주어진 소수 배열의 중복 요소 제거하기

    크기가 N인 배열이 주어져 있으며, 배열의 모든 원소는 소수로 구성되어 있다고 가정해 보겠습니다. 우리의 과제는 배열 안에 존재하는 중복된 숫자를 찾아 제거하는 것입니다.예제 1입력N = 8 arr[ ] = { 2, 2, 2, 3, 3, 3, 5, 7 }출력2 3 5 7설명: 주어진 소수 배열에는 2와 3이 각각 여러 번 중복되어 있습니다. 중복을 제거하면 2, 3, 5, 7만 남게 되므로 출력 결과는 2 3 5 7이 됩니다.예제 2입력N = 5 arr[ ] = { 3, 2, 7, 5, 5 }출력3 2 7 5설명: 배열에서 5가 두

  16. C++로 주어진 숫자의 모든 0을 5로 바꾸는 프로그램 작성하기

    정수 N이 주어졌을 때, 숫자에 포함된 모든 0을 5로 바꾸는 것이 목표입니다. 다만, 숫자 맨 앞에 위치한 선행(leading) 0은 유효한 자릿수가 아니므로 그대로 유지되며 5로 대체할 수 없습니다.입력 및 출력 예시입력-1 −N = 1007출력 −1557설명 − 주어진 숫자에는 0이 두 개 포함되어 있으며, 이를 모두 5로 바꾸면 결과는 1557이 됩니다.입력-2 −N = 00105출력 −155설명 − 주어진 숫자는 선행 0으로 시작하므로 해당 부분은 무시됩니다. 중간에 있는 0을 5로 바꾸면 최종 결과는 155가 됩니다.문제

  17. C++로 문자열 속 모음만 뒤집기 — 투 포인터 알고리즘 완벽 정리

    문자열이 주어졌을 때, 해당 문자열에 포함된 모든 모음(vowel)만 골라서 순서를 뒤집는 것이 이번 문제의 목표입니다.입력 예시 1 −a = "tutor"출력 −totur설명 − 문자열 "tutor"에서 모음 u, o, u의 위치와 순서를 서로 뒤바꾸면 결과는 "totur"가 됩니다.입력 예시 2 −a = "mathematics"출력 −mithametacs설명 − 문자열 "mathematics"의 모음들만 역순으로 재배치하면 결과는 "

  18. C++로 단일 연결 리스트(Singly Linked List)에서 특정 요소 검색하기

    단일 연결 리스트(Singly Linked List)가 주어졌을 때, 해당 리스트 안에서 특정 요소를 검색하는 문제입니다. 요소를 찾으면 Present를 출력하고, 찾지 못하면 Not Present를 출력해야 합니다.예시 1입력:1 → 2 → 3 → 4 → 5 → 6검색 대상: 7출력:Not Present설명: 주어진 단일 연결 리스트에는 7이 존재하지 않으므로 Not Present를 반환합니다.예시 2입력:1 → 2 → 3 → 4 → 5검색 대상: 2출력:Present설명: 주어진 단일 연결 리스트에 2가 존재하므로 Present

  19. C++로 0, 1, 2 배열 정렬하기 – DNF(네덜란드 국기) 정렬 알고리즘

    문제 소개 0, 1, 2로만 구성된 배열이 주어졌을 때, 모든 0은 1보다 앞쪽에, 모든 2는 맨 뒤쪽에 오도록 요소를 정렬해야 합니다. 이때 추가 메모리 없이 배열 자체에서 정렬을 수행하는 제자리(in-place) 정렬이어야 한다는 점이 핵심입니다. 이 문제는 DNF(Dutch National Flag, 네덜란드 국기) 정렬 알고리즘을 사용하면 시간 복잡도 O(n), 공간 복잡도 O(1)로 효율적으로 해결할 수 있습니다. 입력 예제 1 입력 − arr[ ]= {2,0,0,1,2,1 } 출력 − 0 0 1 1 2 2 설명 − 0,

  20. C++로 정렬된 배열의 제곱값을 정렬하여 출력하는 방법

    정렬된 정수 배열이 주어졌을 때, 각 요소의 제곱값을 구한 뒤 다시 오름차순으로 정렬된 배열을 출력하는 것이 이 문제의 목표입니다.입력 및 출력 예시예시 1arr[ ] = { -3, -1, 0, 1, 4, 6 };출력:{0, 1, 1, 9, 16, 36}설명: 주어진 배열 [-3, -1, 0, 1, 4, 6]의 각 요소를 제곱하면 [9, 1, 0, 1, 16, 36]이 되고, 이를 정렬하면 [0, 1, 1, 9, 16, 36]이 됩니다. 음수의 제곱은 양수가 되기 때문에 원래 배열이 정렬되어 있어도 제곱 후에는 재정렬이 필요합니다.

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:254/300  20-컴퓨터/Page Goto:1 248 249 250 251 252 253 254 255 256 257 258 259 260