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

C++

  1. C++로 정오각형의 넓이를 구하는 프로그램 만들기

    이 문제에서는 정오각형의 한 변의 길이를 나타내는 숫자 n이 주어지며, 이를 이용해 C++로 오각형의 넓이를 계산하는 프로그램을 작성하는 것이 목표입니다.오각형(Pentagon)은 다섯 개의 변을 가진 도형을 의미합니다.정오각형이란?정오각형(Regular Pentagon)은 다섯 개의 변의 길이와 다섯 개의 내각의 크기가 모두 같은 오각형을 말합니다.문제 이해를 위한 예시입력a = 7출력84.3해결 접근 방법이 문제는 기하학에서 제공하는 정오각형 넓이 공식을 직접 사용하면 간단하게 해결할 수 있습니다.정오각형의 넓이 공식은 다음과

  2. C++로 해결하는 회문 분할 III (Palindrome Partitioning III)

    문제 이해하기소문자로만 구성된 문자열 s와 정수 k가 주어집니다. 우리는 다음 두 가지 작업을 순서대로 수행해야 합니다.필요하다면 문자열 s의 일부 문자를 다른 소문자 영어 알파벳으로 변경합니다.그다음 문자열 s를 정확히 k개의 부분 문자열로 분할하되, 각 부분 문자열이 모두 회문(palindrome)이 되도록 만듭니다.최종 목표는 이러한 분할을 달성하기 위해 변경해야 하는 문자의 최소 개수를 구하는 것입니다.예시문자열이 ababbc이고 k = 2라고 가정해 보겠습니다. 이 경우 답은 1입니다. 두 개의 회문으로 나누기 위해 단 한

  3. C++로 손익분기점(Break-Even Point)을 구하는 프로그램

    이 문제에서는 월간 총 지출(E), 제품의 판매 가격(S), 제품당 유지 보수 비용(M)이라는 세 개의 변수가 주어집니다. 우리의 과제는 C++로 손익분기점을 찾는 프로그램을 작성하는 것입니다. 손익분기점(Break-Even Point)이란 판매자에게 손실도 이익도 발생하지 않도록 하기 위해 판매해야 하는 총 제품 수를 의미합니다. 즉, 총 매출이 총 비용과 정확히 일치하는 지점입니다. 문제 설명 − 손해가 발생하지 않도록 하기 위해 판매해야 하는 최소 제품 수를 구해야 합니다. 예시를 통해 문제를 이해해 보겠습니다. 입력 E =

  4. C++로 삼각형의 무게중심(Centroid) 구하는 프로그램

    이 문제에서는 삼각형의 세 꼭짓점 좌표를 담고 있는 2차원 배열이 주어지며, C++을 이용해 삼각형의 무게중심(Centroid)을 구하는 프로그램을 작성하는 것이 목표입니다.무게중심과 중선이란?삼각형의 무게중심(Centroid)은 삼각형의 세 중선이 한 점에서 만나 교차하는 지점을 말합니다.중선(Median)은 삼각형의 한 꼭짓점과 그 반대편 변의 중점을 연결하는 선분입니다.구체적인 예시를 통해 문제를 살펴보겠습니다.입력(-3, 1), (1.5, 0), (-3, -4)출력(-1.5, -1)설명무게중심 (x, y) = ((-3 + 1

  5. C++에서 이진 행렬을 영행렬로 변환하는 최소 뒤집기 횟수 구하기 (BFS + 비트마스킹)

    문제 개요m × n 크기의 이진 행렬 mat이 주어졌다고 가정해 보겠습니다. 한 번의 연산(step)에서는 임의의 셀 하나를 선택하여 해당 셀의 비트와, 존재하는 경우 상하좌우 네 방향 인접 셀의 비트를 모두 뒤집을(flip) 수 있습니다. 이 문제의 목표는 mat를 영행렬(모든 원소가 0인 행렬)로 만드는 데 필요한 최소 연산 횟수를 구하는 것이며, 해가 존재하지 않으면 -1을 반환해야 합니다.예를 들어 입력이 [[0,0],[0,1]]이라면 변환 과정은 다음과 같습니다.위 과정에서 총 3번의 뒤집기가 필요하므로 출력은 3이 됩니다

  6. C++로 주어진 비율에서 동전 종류별 개수 구하는 프로그램

    이 문제에서는 총 금액(totalPrice)과 가방 속 1루피(1 Rs), 50파이사(50 paise), 25파이사(25 paise) 동전의 비율을 나타내는 네 개의 숫자가 주어집니다. 우리의 목표는 C++에서 주어진 비율로부터 각 종류의 동전 개수를 구하는 프로그램을 작성하는 것입니다.문제 설명 − 가방에 담긴 1루피, 50파이사, 25파이사 동전들을 사용하여 주어진 총액과 정확히 일치하는 합계를 만들어야 하며, 이때 각 동전이 몇 개씩 필요한지 계산해야 합니다.예시를 통해 문제를 이해해 보겠습니다.입력TotalPrice = 22

  7. C++로 문자열을 회문으로 만들기 위한 최소 삽입 횟수 구하기

    문자열 s가 주어졌을 때, 이 문자열을 회문(palindrome)으로 만들어야 한다고 가정해 봅시다. 각 단계에서 임의의 위치에 임의의 문자를 삽입할 수 있으며, 회문을 만들기 위해 필요한 최소 삽입 횟수를 구하는 것이 목표입니다.예를 들어 문자열이 mad라면, 앞에 da를 추가하여 damad를 만들거나 뒤에 am을 추가하여 madam을 만들 수 있으므로 정답은 2가 됩니다.해결 접근 방식: 최장 공통 부분 수열(LCS) 활용이 문제는 동적 계획법(DP)을 이용한 최장 공통 부분 수열(Longest Common Subsequence

  8. C++로 정다각형의 외접원 반지름과 넓이 구하는 프로그램

    이 글에서는 다각형의 변의 개수 N과 한 변의 길이 A가 주어졌을 때, 해당 정다각형의 외접원(circumcircle)을 구하는 C++ 프로그램 작성 방법을 소개합니다. 문제 설명 변의 개수와 한 변의 길이가 주어진 정다각형이 있을 때, 이 다각형의 모든 꼭짓점을 지나는 원인 외접원의 반지름과 넓이를 계산하는 것이 목표입니다. 예시로 이해하기 입력: n = 4, a = 2 위 입력은 한 변의 길이가 2인 정사각형을 의미합니다. 이 경우 외접원의 반지름은 √2 ≈ 1.414이며, 넓이는 약 6.283입니다. 해결 접근 방식 문

  9. C++로 휠 그래프의 지름, 사이클 수, 간선 수 구하기

    문제 소개이 문제에서는 휠 그래프(Wheel Graph)의 정점 개수를 나타내는 숫자가 주어지며, 우리가 작성해야 할 프로그램은 C++로 휠 그래프의 지름, 사이클 수, 간선 수를 구하는 것입니다.문제 설명 — n개의 정점을 가진 휠 그래프에 대해 사이클의 개수, 간선의 개수, 그리고 지름을 계산해야 합니다.먼저 휠 그래프의 기본 개념부터 차근차근 살펴보겠습니다.휠 그래프란?휠 그래프는 사이클 그래프 C(n-1)에 새로운 정점 하나를 추가하여 만든 그래프입니다. 이때 새로 추가된 정점을 허브(Hub)라고 부르며, 허브는 해당 사이클

  10. C++에서 세 숫자의 공비를 구하는 프로그램 – 두 비율로 연비 계산하기

    이 문제에서는 두 개의 비율, 즉 x:y와 y:z가 주어지며, 우리의 과제는 C++에서 세 숫자의 공비를 구하는 프로그램을 작성하는 것입니다. 문제 설명 주어진 두 비율을 이용해 세 숫자의 공비를 찾아야 합니다. x:y와 y:z라는 정보만 가지고 x:y:z 형태의 연비를 완성하는 것이 목표입니다. 예시로 문제 이해하기 입력 3:5 8:9 출력 24 : 40 : 45 풀이 설명 − x:y와 y:z라는 서로 다른 두 비율이 주어져 있습니다. x:y:z를 만들려면 두 비율에서 공통 항인 y를 같은 값으로 맞춰야 하는데, 이때 교차 곱셈(

  11. C++로 할인율 계산하는 프로그램 만들기

    이 문제에서는 상품의 정가(Marked Price, M)와 판매가(Selling Price, S)를 나타내는 두 개의 숫자가 주어집니다. 우리의 과제는 C++로 할인율(Discount Percentage)을 구하는 프로그램을 작성하는 것입니다.할인(Discount)이란 상품의 실제 가격, 즉 정가에서 차감되는 금액을 의미합니다.할인액 계산 공식할인액 = 정가 - 판매가할인율(Discount Percentage)은 상품의 실제 가격에서 차감된 금액이 전체 가격에서 차지하는 비율을 백분율(%)로 나타낸 값입니다.할인율 계산 공식할인율

  12. C++로 연속된 자연수의 합으로 표현하는 방법의 수 구하기

    양의 정수 N이 주어졌을 때, 이 숫자를 하나 이상의 연속된 양의 정수(자연수)의 합으로 나타낼 수 있는 서로 다른 방법이 총 몇 가지인지 구하는 것이 이번 문제의 목표입니다. 예를 들어 입력값이 10이라면 출력은 2가 됩니다. 10은 다음 두 가지 방법으로 연속된 자연수의 합으로 표현할 수 있기 때문입니다. 10 (숫자 자신 하나만 사용) 1 + 2 + 3 + 4 접근 방법 핵심은 N을 i개의 연속된 자연수의 합으로 표현할 수 있는지 판단하는 것입니다. 1부터 i까지의 합은 등차수열 공식에 의해 i × (i + 1) / 2

  13. C++로 트리의 거리 합계 구하기: DFS 두 번으로 O(N)에 해결하는 방법

    무방향이면서 연결된 하나의 트리가 있고, 이 트리에는 N개의 노드가 존재한다고 가정해 봅시다. 노드는 0부터 N-1까지 라벨이 붙어 있으며, N-1개의 간선이 주어집니다. i번째 간선은 edges[i][0]과 edges[i][1] 두 노드를 연결합니다. 우리가 구해야 하는 것은 ans[i]가 노드 i와 나머지 모든 노드 사이의 거리의 합을 나타내는 리스트입니다.예를 들어 입력이 N = 6이고 edges = [(0,1),(0,2),(2,3),(2,4),(2,5)]라면, 출력은 [8,12,6,10,10,10]이 됩니다.문제 접근 방식모

  14. C++ 유니온-파인드로 풀어보는 유사한 문자열 그룹 문제

    문제 이해하기두 문자열 X와 Y가 있을 때, X의 두 글자를 서로 바꿔서 Y와 동일하게 만들 수 있다면 두 문자열은 유사(similar)하다고 정의합니다. 또한 두 문자열이 처음부터 완전히 같은 경우에도 유사하다고 간주합니다.예를 들어 tars와 rats는 t와 r을 맞바꾸면 서로 같아지므로 유사합니다. 마찬가지로 rats와 arts도 유사하지만, star는 tars, rats, arts 어느 것과도 유사하지 않습니다. 따라서 이 문자열들은 {tars, rats, arts}와 {star}라는 두 개의 연결된 그룹을 형성합니다.흥미로

  15. C++로 그래프의 모든 노드를 방문하는 최단 경로 찾기

    무방향 연결 그래프가 하나 주어지고, N개의 노드는 0, 1, 2, ..., N-1로 레이블되어 있다고 가정해 보겠습니다. graph 배열의 길이는 N이며, graph[i] 리스트에는 노드 i와 연결된 노드 j(i ≠ j)가 정확히 한 번씩 포함됩니다. 우리가 구해야 하는 것은 모든 노드를 방문하는 최단 경로의 길이입니다.여기에는 몇 가지 유연한 조건이 있습니다. 시작 노드와 종료 노드는 자유롭게 선택할 수 있고, 이미 방문한 노드를 여러 번 다시 지나갈 수 있으며, 간선도 재사용이 가능합니다.예를 들어 입력이 [[1],[0,2,4

  16. C++로 풀어보는 K-유사 문자열(K-Similar Strings) 문제

    문제 소개 두 문자열 A와 B가 있다고 가정해 보겠습니다. 문자열 A에서 임의의 두 글자의 위치를 정확히 K번 교환(swap)했을 때 결과가 B와 같아진다면, 이 두 문자열은 K-유사(K-similar)하다고 정의합니다. 여기서 K는 음수가 아닌 정수입니다. 즉, 서로 애너그램(anagram) 관계인 두 문자열 A와 B가 주어졌을 때, 두 문자열이 K-유사 관계가 되도록 하는 최소값 K를 찾는 것이 이 문제의 핵심입니다. 예를 들어 입력이 A = abc, B = bac라고 해보죠. 인덱스 0의 a와 인덱스 1의 b를 딱 한 번만 교

  17. C++로 K명의 작업자를 고용할 때 드는 최소 비용 구하기

    문제 설명N명의 작업자가 있다고 가정해 보겠습니다. 각 작업자는 품질(quality)이라는 지표를 가지며, i번째 작업자는 품질 값 quality[i]와 최저 임금 기대치 wage[i]를 갖습니다. 우리는 K명의 작업자를 고용하여 하나의 급여 그룹을 구성하려고 하며, 이때 다음 두 가지 규칙을 반드시 지켜야 합니다.급여 그룹에 속한 각 작업자는 그룹 내 다른 작업자들과 비교한 자신의 품질 비율에 비례하여 급여를 받아야 합니다.급여 그룹의 모든 작업자는 자신이 기대하는 최저 임금 이상을 받아야 합니다.즉, 위 조건을 모두 만족하면서

  18. C++로 구현하는 '합이 최소 K 이상인 가장 짧은 부분 배열' 알고리즘

    배열 A가 주어졌을 때, 합이 K 이상이 되는 가장 짧은 비어 있지 않은 연속 부분 배열(subarray)의 길이를 구하는 문제입니다. 만약 조건을 만족하는 부분 배열이 존재하지 않는다면 -1을 반환해야 합니다.예를 들어, 입력이 [5, 3, -2, 2, 1]이고 K = 6이라면 출력은 2가 됩니다. 앞의 두 원소를 더한 값(5 + 3 = 8)이 6 이상이기 때문입니다.접근 방법: 누적 합과 단조 큐(Monotonic Deque)배열에 음수가 포함되어 있기 때문에 단순한 슬라이딩 윈도우 기법으로는 해결할 수 없습니다. 대신 누적 합

  19. C++ 그리디 알고리즘으로 푸는 최소 급유 정지 횟수 문제

    문제 개요 자동차가 출발 지점에서 동쪽으로 t마일 떨어진 목적지까지 이동하는 상황을 생각해 봅시다. 이동 경로에는 여러 개의 주유소가 있습니다. 각 station[i]은 출발점에서 동쪽으로 station[i][0]마일 떨어진 위치에 있는 주유소를 나타내며, 해당 주유소에는 station[i][1]리터의 연료가 저장되어 있습니다. 자동차는 무한대 크기의 연료 탱크를 갖고 있으며, 출발 시 startFuel리터의 연료가 들어 있습니다. 자동차는 1마일 주행할 때마다 1리터의 연료를 소모합니다. 자동차가 주유소에 도착하면 잠시 멈춰 주유

  20. C++로 풀어보는 수익성 있는 계획(Profitable Schemes): 동적 계획법 완벽 가이드

    갱단에 G명의 멤버가 있고, 저지를 결정할 수 있는 다양한 범죄 목록이 주어져 있다고 가정해 보겠습니다. i번째 범죄는 profit[i]만큼의 이익을 창출하며, 실행하는 데 group[i]명의 멤버가 필요합니다.한 멤버가 어떤 범죄에 참여하고 있다면 다른 범죄에는 동시에 참여할 수 없습니다. 여기서 수익성 있는 계획(profitable scheme)이란, 선택한 범죄들의 부분집합이 창출하는 총 이익이 최소 P 이상이고, 해당 부분집합에 참여하는 총 멤버 수가 G 이하인 경우를 말합니다.우리가 구해야 할 값은 이런 계획이 총 몇 가지

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:180/300  20-컴퓨터/Page Goto:1 174 175 176 177 178 179 180 181 182 183 184 185 186