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

C++

  1. C++에서 재귀 함수를 사용해 문자열 길이 구하는 방법

    개요 문자열이 주어졌을 때, 사용자 정의 함수 또는 내장 함수를 사용하여 해당 문자열의 길이를 계산하는 것이 이번 글의 목표입니다. C++에서 문자열의 길이를 구하는 방법은 크게 두 가지가 있습니다. 사용자 정의 함수 사용 − 재귀 호출을 활용해 문자열을 한 글자씩 탐색하며, 문자열의 끝을 나타내는 널 문자(\0)를 만날 때까지 카운트를 1씩 증가시키는 방식입니다. 내장 함수(strlen) 사용 − string.h 헤더 파일에 정의된 strlen() 함수를 사용하는 방법입니다. 이 함수는 문자열 타입의 인수 하나를 받아 해당 문

  2. C++로 문장에서 가장 긴 단어의 길이 구하기

    여러 단어로 구성된 문장이 주어졌을 때, 그 문장에서 가장 긴 단어의 길이를 찾아내는 것이 이번 튜토리얼의 목표입니다. 문자열을 한 글자씩 순회하면서 공백을 기준으로 단어를 구분하고, 각 단어의 길이를 비교하는 방식으로 해결할 수 있습니다.예시입력: hello I am here 출력: maximum length of a word is: 5 입력: tutorials point is the best learning platform 출력: maximum length of a word is: 9해결 접근 방법문장을 하나의 문자열로 입력받

  3. C++로 배열 요소 전체 곱하기: 초보자를 위한 완벽 가이드

    정수형 배열이 주어졌을 때, 배열에 포함된 모든 요소를 곱한 결과를 계산하여 화면에 출력하는 것이 이 프로그램의 목표입니다.예시입력-: arr[]={1,2,3,4,5,6,7} 출력-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 입력-: arr[]={3,4,6,2,7,8,4} 출력-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256해결 접근 방식아래 프로그램에서 사용하는 핵심 로직은 다음과 같습니다.최종 결과를 저장할 임시 변수(temp)를 선언하고 1로 초기화합니다.배열의 크기 n만큼 반복문을 실행합니

  4. C++로 ISBN 번호 유효성 검사하는 프로그램

    주어진 문자열이 올바른 ISBN 번호인지 아닌지 판별하는 것이 이번 글의 목표입니다. C++ 코드 예제와 함께 ISBN의 개념부터 검증 알고리즘까지 차근차근 살펴보겠습니다.ISBN 번호란 무엇인가?ISBN은 International Standard Book Number, 즉 국제 표준 도서번호의 약자입니다. 2006년 12월까지는 10자리 번호 체계가 사용되었으며, 2007년 1월 1일부터는 13자리 번호로 개정되었습니다. 이 글에서는 기존 방식인 10자리 ISBN의 구현 방법을 다룹니다.ISBN의 각 자리에는 다음과 같은 규칙이

  5. 원가와 순 판매가로 GST 세율을 계산하는 C++ 프로그램

    GST란 무엇인가?원가(original cost)와 순 판매가(net price)가 입력으로 주어졌을 때, GST 백분율을 계산하고 그 결과를 출력하는 것이 이 프로그램의 목표입니다.GST(Goods and Services Tax, 상품·서비스세)는 상품과 서비스에 부과되는 세금으로, 항상 제품의 순 판매가에 포함되어 있습니다. 따라서 GST 백분율을 구하기 전에 먼저 GST 금액을 계산해야 하며, 이때 다음과 같은 공식을 사용할 수 있습니다.계산 공식순 판매가 = 원가 + GST 금액GST 금액 = 순 판매가 − 원가GST 백분율

  6. C++로 이익과 손실 계산하기: 손익 계산 프로그램 만들기

    원가(CP)와 판매가(SP)가 주어졌을 때, 얻은 이익 또는 발생한 손실을 계산하는 것이 이 프로그램의 목표입니다.원가(Cost Price, CP)란 판매자가 상품을 구매할 때 지불한 가격을 의미하며, 판매가(Selling Price, SP)란 판매자가 상품을 판매한 가격을 의미합니다.이익과 손실을 계산하는 공식은 다음과 같습니다.이익 = 판매가 − 원가판매가가 원가보다 크다면 이익이 발생합니다.손실 = 원가 − 판매가원가가 판매가보다 크다면 손실이 발생합니다.예시입력: CP = 600 SP = 100 출력: 발생한 손실

  7. C++로 그래프의 에지 커버(Edge Cover) 계산하기

    정점(vertex)이 n개인 그래프가 주어졌을 때, 해당 그래프의 에지 커버(edge cover)를 계산하는 것이 이번 글의 목표입니다. 에지 커버란 그래프의 모든 정점을 덮을 수 있도록 필요한 최소한의 간선 개수를 찾는 문제를 의미합니다.예를 들어 정점의 개수 n = 5라고 가정해 보겠습니다.이때 그래프는 다음과 같습니다.이 그래프의 에지 커버는 3입니다.이번에는 n = 8인 또 다른 예를 살펴보겠습니다.이 그래프의 에지 커버는 4입니다.예시 입출력입력: n = 5출력: 3입력: n = 8출력: 4접근 방법에지 커버를 구하는 핵심

  8. C++로 문자열의 첫 번째 문자와 마지막 문자가 같은지 확인하는 방법

    문자열이 입력으로 주어졌을 때, 해당 문자열의 첫 번째 문자와 마지막 문자가 서로 같은지 판별하는 것이 이번 문제의 목표입니다. C++의 기본적인 문자열 처리 함수만 활용하면 아주 간단하게 해결할 수 있습니다. 예시 입력: study 출력: 같지 않음     첫 번째 문자는 s이고 마지막 문자는 y이기 때문입니다. 입력: nitin 출력: 첫 번째와 마지막 문자가 같습니다     첫 번째 문자는 n이고 마지막 문자도 n이기 때문입니다. 문제 해결 접근 방식

  9. C++ 입력값이 정수인지 문자열인지 판별하는 프로그램

    사용자로부터 입력받은 값이 주어졌을 때, 해당 입력이 정수(integer)인지 문자열(string)인지 판별하는 것이 이번 글의 핵심 과제입니다.여기서 말하는 정수란 0~9 사이의 숫자들로만 이루어진 조합을 의미하며, 문자열은 0~9를 제외한 문자들을 포함하는 조합을 의미합니다.예시입력 -: 123 출력 -: 123은 정수입니다 입력 -: Tutorials Point 출력 -: Tutorials Point는 문자열입니다접근 방법데이터를 입력받습니다.isdigit() 함수를 적용하여 주어진 입력이 숫자 문자인지 여부를 검사합니다.

  10. 주어진 시간 내에 탱크가 넘치거나 부족하거나 정확히 채워지는지 확인하는 C++ 프로그램

    탱크에 물을 채우는 속도(rate), 탱크의 높이(height)와 반지름(radius)이 주어졌을 때, 주어진 시간 안에 탱크가 넘치는지(오버플로), 부족하게 차는지(언더플로), 아니면 딱 맞게 채워지는지 판별하는 C++ 프로그램을 살펴보겠습니다.문제 예시입력: radius = 2, height = 5, rate = 10출력: tank overflow (탱크가 넘침)입력: radius = 5, height = 10, rate = 10출력: tank underflow (탱크가 부족함)접근 방법원기둥 모양의 탱크 부피는 V = π ×

  11. C++로 등차수열의 합 구하기: 완벽 가이드

    이 글에서는 첫째 항 a, 공차 d, 그리고 항의 개수 n이 주어졌을 때 등차수열을 생성하고 그 합을 계산하는 C++ 프로그램을 다룹니다.등차수열(Arithmetic Series)이란?등차수열은 인접한 두 항 사이의 차이가 일정한 수열입니다. 첫째 항은 고정된 값 a이며, 각 항 사이의 공통된 차이를 공차 d라고 부릅니다.등차수열은 다음과 같이 표현할 수 있습니다.a, a + d, a + 2d, a + 3d, . . .예시입력: a = 1.5, d = 0.5, n = 10출력: 등차수열의 합 : 37.5입력: a = 2.5, d =

  12. C++로 N개 정수의 곱이 주어졌을 때 최대 GCD 구하기

    두 정수 N과 P가 있다고 가정해 봅시다. 여기서 P는 N개의 미지의 정수들의 곱입니다. 이때 이 정수들이 가질 수 있는 최대 공약수(GCD)를 구하는 것이 바로 이번 글에서 다룰 문제입니다. 예를 들어 N = 3, P = 24라면, 세 정수의 곱이 24가 되는 조합과 각각의 GCD는 다음과 같습니다. {1, 1, 24} → GCD = 1 {1, 2, 12} → GCD = 1 {1, 3, 8} → GCD = 1 {1, 4, 6} → GCD = 1 {2, 2, 6} → GCD = 2 {2, 3, 4} → GCD = 1 각 조

  13. C++로 구현하는 LCM이 곱과 같은 최대 길이 부분 배열 찾기

    문제 설명배열 A가 주어졌을 때, 요소들의 곱(product)과 최소공배수(LCM)가 서로 같은 부분 배열(subarray) 중 가장 긴 길이를 구하는 문제입니다. 만약 조건을 만족하는 부분 배열이 하나도 없다면 -1을 반환해야 합니다.예를 들어 배열이 {6, 10, 21}이라고 해보겠습니다. 이때 부분 배열 {10, 21}을 살펴보면, 두 수의 LCM은 210이고 곱 역시 10 × 21 = 210으로 서로 일치합니다. 따라서 정답은 길이 2가 됩니다.접근 방법이 문제는 비교적 단순한 브루트 포스(완전 탐색) 방식으로 해결할 수 있

  14. C++로 구현하기: C로 나누어 떨어지면서 [A, B] 범위에 포함되지 않는 최소 양의 정수 찾기

    문제 개요이번 글에서는 흥미로운 알고리즘 문제를 하나 살펴보겠습니다. 세 개의 정수 A, B, C가 주어졌을 때, 다음 두 조건을 동시에 만족하는 가장 작은 양의 정수 X를 구하는 것이 목표입니다.X mod C = 0, 즉 X는 C로 나누어 떨어져야 합니다.X는 닫힌 구간 [A, B]에 포함되지 않아야 합니다.예를 들어 A = 5, B = 10, C = 4라고 가정해 보겠습니다. 이때 X의 값은 4가 됩니다. 4는 4로 나누어 떨어지고(4 mod 4 = 0), 구간 [5, 10]의 범위 밖에 있기 때문입니다.해결 접근 방법이 문제는

  15. C++에서 분할 정복(Divide and Conquer) 알고리즘으로 최대 부분배열 합 구하기

    양수와 음수가 섞여 있는 하나의 데이터 배열이 있다고 가정해 보겠습니다. 이때 우리는 연속된 부분배열(contiguous subarray)의 합 중 가장 큰 값을 찾아야 합니다.예를 들어 배열이 {-2, -5, 6, -2, -3, 1, 5, -6}이라면, 최대 부분배열의 합은 7이며, 이는 {6, -2, -3, 1, 5} 구간의 합에 해당합니다.분할 정복 접근 방식이 문제는 분할 정복(Divide and Conquer) 기법으로 효율적으로 해결할 수 있습니다. 전체 시간 복잡도는 O(n log n)으로, 단순한 브루트 포스 방식(O

  16. C++ 메타 문자열 판별하기: 문자 하나를 교환했을 때 두 문자열이 같아지는지 확인하는 방법

    메타 문자열(Meta String)이란?이번 글에서는 두 문자열이 메타 문자열인지 확인하는 방법을 알아보겠습니다. 메타 문자열이란 서로 매우 유사한 문자열로, 한쪽 문자열에서 단 두 개의 문자 위치를 맞바꾸면 다른 문자열과 완전히 일치하게 되는 관계를 말합니다.예를 들어 HELLO와 OELLH라는 두 문자열이 있다고 가정해 보겠습니다. 첫 번째 문자열의 H와 O의 위치를 서로 바꾸면 OELLH가 되어 두 번째 문자열과 정확히 일치합니다. 따라서 이 두 문자열은 메타 문자열입니다.메타 문자열 판별 알고리즘두 문자열이 메타 문자열인지

  17. C++ 배열 원소 제거 비용 최소화하기

    배열에 N개의 원소가 있다고 가정해 보겠습니다. 주어진 연산 규칙에 따라 배열에서 원소를 제거해야 합니다. 연산 방식은 다음과 같습니다. 배열에서 임의의 두 숫자를 선택한 뒤, 그중 더 큰 수를 제거하고, 이때 발생하는 비용은 두 수 중 작은 값과 같습니다. 한 번에 하나의 원소만 제거할 수 있으며, 전체 작업을 최소 비용으로 완료하는 것이 목표입니다. 예를 들어 배열이 {4, 2, 5}라고 해보겠습니다. 먼저 4와 2를 선택해 4를 제거하면 비용 2가 발생하고, 이어서 2와 5를 선택해 5를 제거하는 데 역시 비용 2가 듭니다.

  18. C++로 배열의 모든 부분 배열 중 최소 LCM과 GCD 구하는 방법

    문제 개요크기가 N인 양의 정수 배열 arr가 주어졌을 때, 가능한 모든 부분 배열(subarray) 중에서 최소 LCM(최소공배수)과 최소 GCD(최대공약수)를 구하는 문제입니다.예를 들어 배열이 {2, 66, 14, 521}이라면, 최소 LCM은 2이고 최소 GCD는 1입니다.접근 방법: 그리디(Greedy) 기법이 문제는 그리디 접근법으로 간단히 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.LCM의 경우: 원소의 개수가 줄어들수록 LCM은 작아지거나 같아집니다. 따라서 가장 작은 LCM은 배열 내 단일 원소 중 최솟값

  19. C++에서 문자 삭제 없이 두 문자열을 아나그램으로 만드는 최소 변경 횟수 구하기

    같은 길이를 가진 두 개의 문자열이 있을 때, 어떤 문자도 삭제하지 않으면서 두 문자열을 아나그램(Anagram)으로 만들기 위해 필요한 최소 변경 횟수를 구하는 문제입니다. 아나그램이란 두 문자열이 동일한 문자 집합을 가지는 경우를 말합니다.예를 들어 HELLO와 WORLD라는 두 문자열이 있다고 가정해 보겠습니다. 이 경우 세 글자가 서로 다르므로 필요한 변경 횟수는 3이 됩니다.알고리즘 접근 방식핵심 아이디어는 간단합니다. 먼저 첫 번째 문자열에서 각 문자의 빈도수(frequency)를 계산합니다. 그다음 두 번째 문자열을 순

  20. C++로 배열의 GCD를 k의 배수로 만드는 최소 연산 횟수 구하기

    배열 arr과 값 k가 주어졌을 때, 배열 전체의 GCD(최대공약수)를 k의 배수가 되도록 만들기 위해 필요한 최소 연산 횟수를 구하는 문제입니다. 여기서 연산이란 특정 요소의 값을 1만큼 증가시키거나 감소시키는 것을 의미합니다.예를 들어 배열이 {4, 5, 6}이고 k = 5라고 가정해 봅시다. 4를 1 증가시키고, 6을 1 감소시키면 배열은 {5, 5, 5}가 되어 GCD가 5(k의 배수)가 됩니다. 이때 필요한 연산 횟수는 총 2회입니다.알고리즘 접근 방법각 요소를 k의 배수에 가장 가깝게 만들면 되므로, 다음 단계를 따라 문

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:79/300  20-컴퓨터/Page Goto:1 73 74 75 76 77 78 79 80 81 82 83 84 85