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

C++

  1. 모두가 원하는 아이스크림을 먹을 수 있는지 판별하는 C++ 코드

    문제 상황파티에 성향이 서로 다른 세 그룹의 사람들이 참석한다고 가정해 보겠습니다.첫 번째 그룹은 버터스카치 아이스크림만 좋아하고 다른 맛은 전혀 먹지 않습니다. 두 번째 그룹은 딸기 아이스크림만 싫어하며 나머지 모든 맛을 즐길 수 있습니다. 세 번째 그룹은 어떤 맛의 아이스크림이든 모두 좋아합니다.첫 번째 그룹에서 x명, 두 번째 그룹에서 y명, 세 번째 그룹에서 z명이 파티에 오며, 모든 사람은 최소 한 개 이상 자신이 좋아하는 아이스크림을 받아야 합니다. 주최 측은 버터스카치 아이스크림 a팩, 초콜릿 아이스크림 b팩, 딸기 아

  2. C++ 코드로 풀어보는 음료 리필 팩 최적 구매 수량 문제

    문제 상황한 주 동안 어느 경기장에서 a번의 경기와 b번의 기자회견이 개최된다고 가정해 보겠습니다. 경기장에는 선수 탈의실과 기자회견장 두 곳에 각각 카페테리아가 운영되며, 두 카페테리아에는 음료 디스펜서가 하나씩 설치되어 있습니다. 이 디스펜서들은 주가 시작되는 시점에 미리 채워 넣어야 합니다.탈의실 카페테리아의 디스펜서는 사용 빈도가 높아 매 c경기가 끝날 때마다 리필이 필요하고, 기자회견장 카페테리아의 디스펜서는 d회의 행사가 진행될 때마다 리필해야 합니다. 경기장 관리위원회는 매주 시작 시점에 총 k개의 음료 리필 팩을 주문

  3. C++로 격자 속 객체 탐색에 필요한 최소 스캔 횟수 구하기

    문제 개요m × n 크기의 격자(grid)가 주어져 있다고 가정해 보겠습니다. 객체는 셀 (ix, iy)에 놓여 있으며, 우리는 시작 위치 (sx, sy)에서 스캔을 시작해 이 객체를 찾아야 합니다. 스캔 알고리즘은 격자의 셀 (i, j)에 위치할 때마다 i번째 행과 j번째 열을 한 번에 스캔합니다. 객체를 발견하면 스캔이 즉시 중단되고, 발견하지 못하면 스캔 포인터는 (i + 1, j + 1) 위치의 셀로 이동한 뒤 같은 방식으로 다시 스캔을 진행합니다. 이 과정은 객체를 찾을 때까지 반복됩니다. 주어진 위치 정보를 바탕으로, 객

  4. C++로 이름의 성별(남성/여성) 판별하기

    배열 input에 n개의 문자열이 주어져 있다고 가정해 보겠습니다. 이 문자열들은 사람의 이름이며, 각 이름이 남성 이름인지 여성 이름인지 판별해야 합니다. 판별 기준은 간단합니다. 이름이 a, e, i, y 중 하나로 끝난다면 여성 이름으로 간주하고, 그 외의 경우에는 남성 이름으로 판단합니다. 각 입력에 대해 그 결과를 순서대로 출력하면 됩니다. 예를 들어 입력이 n = 5, input = {Lily, Rajib, Thomas, Riley, Chloe}라고 한다면, 각 이름의 마지막 글자를 확인한 결과 출력은 Female, M

  5. C++로 두 숫자 중 어느 쪽이 더 클 확률이 높은지 판별하는 방법

    두 개의 k자리 숫자 m과 n이 주어졌다고 가정해 봅시다. 각 숫자의 자릿수는 무작위로 섞인 상태에서 서로 비교되며, 우리는 어떤 숫자가 더 클 확률이 높은지 알아내야 합니다.예를 들어 입력이 n = 231, m = 337, k = 3이라면 출력은 Second가 됩니다. 즉, 두 번째 숫자가 더 클 확률이 더 높다는 의미입니다.풀이 접근 방식이 문제는 다음 단계에 따라 해결할 수 있습니다.n을 문자열 s1으로, m을 문자열 s2로 변환합니다.카운터 변수 f(첫 번째 숫자가 큰 횟수)와 s(두 번째 숫자가 큰 횟수)를 0으로 초기화합

  6. 물리 실험 계산 문제를 해결하는 C++ 코드 구현법

    물리 실험을 수행하는 상황을 가정해 보겠습니다. n개의 값 쌍과 임계값 k가 주어지며, 각 쌍의 첫 번째 값은 하나의 합계(a)에 더하고, 두 번째 값은 또 다른 합계(b)에 더합니다. 그런 다음 각 합계에 대해 합계 자체가 더 작은지, 아니면 (k − 합계) 값이 더 작은지를 비교하여 최솟값을 구하고, 두 결과를 더해 최종 출력하는 것이 목표입니다.예를 들어 입력이 n = 4, k = 20, values = {{3, 5}, {4, 3}, {2, 1}, {4, 4}}라면 출력은 14가 됩니다.해결 접근 방식이 문제는 다음 단계를 따

  7. 맨해튼 거리 제약 조건을 만족하는 점을 찾는 C++ 코드

    문제 개요두 점 a = (x1, y1)과 b = (x2, y2)가 주어졌다고 가정해 봅시다. 두 점 사이의 맨해튼 거리(Manhattan Distance)는 다음과 같이 정의됩니다.dist(a, b) = |x1 - x2| + |y1 - y2|점 a의 좌표가 (0, 0)이고 점 b의 좌표가 (x, y)일 때, 다음 두 조건을 동시에 만족하는 점 c를 찾아야 합니다.dist(a, c) = dist(a, b) / 2dist(b, c) = dist(a, b) / 2즉, a와 b 사이의 맨해튼 거리를 정확히 절반씩 나누는 점을 구하는 문제입

  8. 카드를 버린 후 남은 카드 숫자의 최소 합계를 구하는 C++ 코드

    배열 T에 다섯 개의 숫자가 저장되어 있다고 가정해 봅시다. 다섯 장의 카드가 있으며, 각 카드에는 하나의 숫자가 적혀 있습니다. i번째 카드에는 T[i]라는 숫자가 적혀 있는 형태입니다.우리는 일부 카드를 버릴 수 있으며, 목표는 남아 있는 카드에 적힌 숫자의 합을 최소화하는 것입니다. 단, 같은 숫자가 적힌 카드 두 장 또는 세 장을 버리는 행위는 최대 한 번만 허용됩니다. 만약 같은 숫자를 가진 카드 두 장 또는 세 장을 선택하는 것이 불가능하다면, 어떤 카드도 버리지 않습니다. 이 조건에서 만들 수 있는 최소 합계를 구해야

  9. C++로 배열 요소를 최소 색상 수로 칠하는 방법

    문제 설명n개의 요소를 가진 배열 A가 있다고 가정해 보겠습니다. 우리는 다음 두 조건을 만족하도록 배열의 요소들을 색칠해야 합니다.어떤 색상이든, 그 색상으로 칠해진 모든 요소는 반드시 같은 색상 그룹 내 최솟값으로 나누어 떨어져야 합니다.사용되는 색상의 개수는 가능한 한 최소화해야 합니다.즉, 주어진 모든 숫자를 유효한 방식으로 칠하기 위해 필요한 최소 색상 수를 구하는 것이 목표입니다.예를 들어 입력이 A = [10, 2, 3, 5, 4, 2]라고 한다면, 정답은 3이 됩니다. 첫 번째 색상은 A[0](10)과 A[3](5)에

  10. 메뚜기가 목표 지점에 도달할 수 있는지 확인하는 C++ 코드

    크기가 n인 문자열 S와 하나의 숫자 k가 주어져 있다고 가정해 보겠습니다. 문자열은 네 가지 종류의 문자로 구성되어 있으며, 메뚜기가 점프하여 목표 지점에 도달하려고 합니다. 각 문자의 의미는 다음과 같습니다.문자 .는 해당 칸이 비어 있음을 의미하고, 문자 #는 해당 칸에 장애물이 있어 메뚜기가 그곳으로 점프할 수 없음을 의미합니다. G는 메뚜기가 시작되는 위치를 나타내며, T는 목표 칸을 나타냅니다. 메뚜기는 현재 위치에서 정확히 k칸 떨어진 곳으로만 점프할 수 있습니다. 따라서 우리는 메뚜기가 목표 지점까지 점프할 수 있는지

  11. C++로 모든 연산 후 돌 더미의 최소 개수 구하기

    문자열 S가 n개의 문자로 이루어져 있으며, 각 문자는 + 또는 -라고 가정해 봅시다. 돌 더미가 하나 있고, 총 n번의 연산을 수행하면서 매번 돌을 하나씩 꺼내거나 추가합니다. 단, 돌을 꺼내는 연산을 하기 전에는 반드시 더미가 비어 있지 않아야 합니다. 우리가 구해야 할 것은 이러한 연산들을 모두 수행한 뒤 더미에 남아 있을 수 있는 최소한의 돌 개수입니다. i번째 연산에서 돌을 꺼냈다면 S[i]는 -, 돌을 추가했다면 S[i]는 +입니다.예를 들어 입력이 S = ++-++라면 출력은 3이 됩니다. 처음에 돌 더미가 0개였다고

  12. 조건이 있는 배열 A에서 숨겨진 배열 B를 찾는 C++ 코드

    n개의 원소를 가진 배열 A가 주어지고, 같은 크기의 숨겨진 배열 B가 존재한다고 가정해 보겠습니다. B의 원소는 양수일 수도, 음수일 수도 있습니다. 인덱스 i(1 ≤ i ≤ n)마다 다음과 같은 연산이 수행됩니다. 먼저 A[i]를 0으로 초기화합니다. 그다음 A[i]에 B[i]를 더하고, B[i+1]을 빼고, 다시 B[i+2]를 더하는 식으로 부호를 번갈아 가며 더해 나갑니다. 즉, A[i] = B[i] − B[i+1] + B[i+2] − B[i+3] + … 의 관계가 성립합니다. 목표는 배열 A의 값만으로 숨겨진 배열 B를

  13. C++로 주식 매매 후 최대 자산 계산하기

    두 개의 배열 A(크기 n), B(크기 m)와 하나의 숫자 r이 주어졌다고 가정해 봅시다. 주식을 구매할 수 있는 기회가 총 n번 있으며, i번째 기회에서는 원하는 만큼 주식을 살 수 있고 그때의 가격은 A[i]입니다. 마찬가지로 주식을 판매할 수 있는 기회가 총 m번 있으며, i번째 기회에서의 판매 가격은 B[i]입니다. 단, 보유한 주식보다 많이 팔 수는 없습니다.초기 자금 r이 있고 현재 보유한 주식이 없을 때, 매수와 매도를 모두 마친 후 가질 수 있는 최대 금액을 구하는 것이 이 문제의 목표입니다.문제 예시예를 들어 입력이

  14. 게임에서 n부터 시작하는 최소 숫자를 찾는 C++ 코드

    문제 개요 하나의 숫자 n이 주어집니다. 게임이 시작될 때 n의 초기값은 v이며, 플레이어는 다음 연산을 0회 이상 자유롭게 반복할 수 있습니다. n보다 작은 양의 정수 x를 선택합니다. 단, x는 n의 약수가 아니어야 합니다. 선택한 x를 n에서 뺍니다. 플레이어의 목표는 이 연산을 적절히 활용해 최종적으로 n의 값을 최소한으로 만드는 것입니다. 예를 들어 입력이 n = 8이라면 출력은 1이 됩니다. 첫 번째 턴에 x = 3을 선택하면 n은 5가 되고, 두 번째 턴에 x = 4를 선택하면 n = 1을 얻을 수 있기 때문입니다.

  15. C++로 사탕을 충분히 줄 수 없는 사람 찾기

    문제 설명 두 개의 숫자 a와 b가 주어진다고 가정해 봅시다. 아말(Amal)과 비말(Bimal)은 각각 a개와 b개의 사탕을 들고 있습니다. 두 사람은 번갈아 가며 사탕을 주고받는데, 아말이 먼저 1개를 비말에게 건네면 비말은 2개를 아말에게 돌려줍니다. 다음 차례에는 아말이 3개, 비말이 4개를 주는 식으로 매번 한 개씩 더 많은 사탕을 주게 됩니다. 이 과정은 어느 한쪽이 요구된 만큼의 사탕을 더 이상 줄 수 없게 되는 순간까지 계속됩니다. 단, 상대방에게 받은 사탕은 자신의 것으로 치지 않는다는 점에 유의해야 합니다. 우리가

  16. 배열 크기의 절반 이상이 양수가 되도록 하는 나눗셈 값 d를 구하는 C++ 코드

    문제 개요n개의 요소로 이루어진 배열 A가 있다고 가정해 보겠습니다. 우리가 찾아야 할 것은 0이 아닌 정수 d로, 배열의 모든 숫자를 d로 나눈 뒤 결과 배열에 남아 있는 양수의 개수가 배열 전체 크기의 절반(올림 값) 이상이 되도록 하는 값입니다. 조건을 만족하는 d가 여러 개라면 그중 어떤 하나만 반환하면 됩니다.예를 들어 입력이 A = [10, 0, -7, 2, 6]라고 해봅시다. n = 5이므로 나눗셈 이후 최소 ⌈5/2⌉ = 3개의 양수가 존재해야 합니다. 이 프로그램은 1을 반환합니다. 실제로 d = 1로 나누면 배열은

  17. C++로 로봇의 최소 이동 횟수 계산하기

    두 개의 좌표 (x1, y1)과 (x2, y2)가 있다고 가정해 봅시다. 로봇은 현재 (x1, y1) 지점에 있으며, (x2, y2) 지점으로 이동하려고 합니다. 로봇은 한 번의 스텝(step)마다 인접한 8개의 칸 중 한 곳으로 이동할 수 있습니다(상, 하, 좌, 우 및 대각선 방향 포함). 우리가 구해야 할 것은 최종 위치에 도달하기 위해 필요한 최소 이동 횟수입니다.문제 예시예를 들어 입력이 다음과 같다고 해 보겠습니다.x1 = 3; y1 = 4; x2 = 6; y2 = 1;이 경우 출력은 3이 됩니다. 아래 그림처럼 대각선

  18. C++로 연속된 모음 제거하기: 문자열 교정 알고리즘 완벽 가이드

    길이가 n인 문자열 S가 있다고 가정해 봅시다. 어느 텍스트 편집기에는 독특한 규칙이 하나 있습니다. 이 편집기의 맞춤법 교정기는 단어 안에 두 개의 연속된 모음이 존재하는 한, 그중 첫 번째 모음을 삭제하는 방식으로 동작합니다. 연속된 모음이 더 이상 없으면 해당 단어를 올바른 단어로 간주합니다. 우리의 목표는 문자열 S에서 이렇게 교정된 최종 단어를 찾는 것입니다.여기서 모음은 a, e, i, o, u, 그리고 y입니다.예를 들어 입력이 S = poor라면, o가 연속으로 두 개 있으므로 앞의 o 하나가 삭제되어 출력은 por이

  19. 두 친구가 만날 때 최소 피로도를 구하는 C++ 코드

    문제 설명두 개의 숫자 a와 b가 주어지고, 두 명의 친구가 OX 축 위의 위치 x = a와 x = b에 각각 서 있다고 가정해 봅시다. 각 친구는 직선을 따라 어느 방향으로든 한 칸씩 무제한으로 이동할 수 있습니다. 이동할 때마다 피로도는 다음 규칙에 따라 증가합니다. 첫 번째 이동은 피로도를 1만큼, 두 번째 이동은 2만큼 증가시키는 식으로, n번째 이동은 피로도를 n만큼 올립니다. 두 친구는 OX 축 위의 한 정수 좌표에서 만나고자 하며, 이때 두 사람이 얻게 되는 총 피로도의 최솟값을 구해야 합니다.예를 들어 입력이 a =

  20. C++로 삼각수(Triangular Number)인지 판별하는 방법

    어떤 자연수 n이 주어졌을 때, 이 수가 삼각수(triangular number)인지 판별하는 문제입니다. 삼각수란 n개의 점(또는 공)을 층층이 배열하여 정삼각형 형태로 만들 수 있는 수를 의미합니다. k번째 삼각수는 1부터 k까지의 합, 즉 k × (k + 1) / 2로 계산됩니다. 예를 들어, 입력이 n = 10이라면 결과는 참(True)이 됩니다. 1 + 2 + 3 + 4 = 10이므로 10은 네 번째 삼각수에 해당합니다. 풀이 접근 방법 이 문제는 간단한 반복문으로 해결할 수 있습니다. i를 1부터 n까지 증가시키면서 i

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:298/300  20-컴퓨터/Page Goto:1 292 293 294 295 296 297 298 299 300