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

C++

  1. C++로 약수 배열에서 원래 숫자 찾기

    이 문제에서는 어떤 수 Num의 약수들로 이루어진 N개의 정수 배열 divisors[]가 주어집니다. 우리가 해야 할 일은 이 약수 배열만 보고 원래의 수 Num을 찾아내는 것입니다.단, 약수 배열에는 1과 그 수 자신은 포함되지 않는다는 점에 유의해야 합니다.문제 이해를 위한 예시입력divisors[] = {3, 25, 5, 15}출력75설명숫자 75의 약수는 {3, 25, 5, 15}이며, 주어진 배열과 정확히 일치하므로 정답은 75입니다.해결 접근 방법이 문제를 해결하는 핵심 아이디어는 다음과 같습니다. 어떤 수의 약수 중 가

  2. C++에서 두 날짜 사이의 일 수를 계산하는 방법

    이 문제에서는 날짜의 DD-MM-YYYY(일-월-연도) 형식을 나타내는 3개의 정수로 구성된 두 개의 배열 date1[]과 date2[]가 주어집니다. 우리의 과제는 두 날짜 사이의 일 수를 구하는 것입니다.예시를 통해 문제를 이해해 보겠습니다.입력date1[] = {13, 3, 2021}, date2[] = {24, 5, 2023}출력802설명두 날짜의 차이는 2년, 2개월(3월 → 5월), 그리고 11일입니다.2*365 + (30 + 31) + 11 = 802해결 접근 방법가장 단순한 해결 방법은 시작 날짜 date1부터 dat

  3. C++로 2차원 행렬에서 끝없는 지점(Endless Point) 개수 구하기

    이 문제에서는 2차원 배열 mat[n][m]이 주어지며, 우리의 목표는 행렬에 존재하는 끝없는 지점(endless point)의 개수를 찾는 것입니다.행렬의 어떤 지점이 끝없는 지점이 되려면, 해당 지점 자체가 1이고 그 뒤에 이어지는 모든 원소들이 1이어야 합니다. 즉, 아래 조건을 만족해야 합니다.mat[i][j]가 끝없는 지점인 조건:mat[i][j] == 1 이면서,같은 행의 뒤 원소들(mat[i][j+1] … mat[i][m-1])과같은 열의 아래 원소들(mat[i+1][j] … mat[n-1][j])이 모두 1입력 예시m

  4. C++로 2차원 배열의 위치 요소(Positional Element) 개수 구하기

    이 문제에서는 2차원 배열 mat[n][m]이 주어지며, 주어진 배열에서 위치 요소(positional element)의 개수를 구하는 것이 목표입니다.여기서 위치 요소란, 해당 값이 자신이 속한 행(row) 또는 열(column)에서 최댓값 또는 최솟값에 해당하는 요소를 의미합니다.예제 입력mat[][] = {2, 5, 7} {1, 3, 4} {5, 1, 3}예제 출력8설명요소 2, 5, 7, 1, 4, 5, 1, 3은 각각 자신이 속한 행 또는 열에서 최댓값 혹은 최솟값에 해당하므로 모두 위치 요소입니다. 따라서 결과는 8개입니

  5. C++에서 n개 변수를 가진 선형 방정식의 해 개수 구하기

    이 문제에서는 다음과 같은 형태의 n개 변수를 가진 선형 방정식이 주어집니다.coeff1(var1) + coeff2(var2) + … + coeffn(varn) = value목표는 이 선형 방정식을 만족하는 음이 아닌 정수 해의 개수를 구하는 것입니다.문제 이해를 위한 예시입력coeff[] = {3, 5}, value = 8출력1설명방정식 : 3x + 5y = 8해 : x = 1, y = 1음이 아닌 정수 범위에서 이 방정식을 만족하는 조합은 (x, y) = (1, 1) 하나뿐이므로 해의 개수는 1이 됩니다.해결 접근

  6. C++에서 합이 짝수인 부분 배열의 개수 구하기

    문제 설명N개의 원소로 구성된 배열 arr[]가 주어졌을 때, 합이 짝수인 부분 배열(subarray)의 개수를 구하는 것이 이번 문제의 목표입니다.예제를 통해 문제를 이해해 보겠습니다.입력arr[] = {2, 1, 3, 4, 2, 5}출력11설명합이 짝수가 되는 부분 배열은 총 11개이며, 다음과 같습니다.{2}, {4}, {2}, {1, 3}, {4, 2}, {2, 1, 3}, {1, 3, 4},{2, 1, 3, 4}, {1, 3, 4, 2}, {3, 4, 2, 5}, {2, 1, 3, 4, 2}풀이 1: 완전 탐색 (브루트 포

  7. C++에서 두 행렬을 같게 만들기 위한 변환 횟수 구하는 방법

    문제 소개이 문제에서는 크기가 같은 두 행렬 mat1[][]과 mat2[][]가 주어집니다. 우리가 구해야 할 것은 두 행렬을 완전히 같게 만들기 위해 필요한 변환 횟수입니다.여기서 허용되는 변환 연산은 다음과 같습니다.두 행렬 중 하나를 선택합니다.선택한 행렬에서 임의의 행(row) 또는 열(column) 하나를 고릅니다.선택한 행 또는 열의 모든 원소에 1을 더합니다.예제를 통해 문제를 자세히 이해해 보겠습니다.입력mat1[][] = {{1, 2}, {2, 1}} mat2[][] = {{2, 3},

  8. C++로 N개의 삼각형 중 고유한 삼각형 개수 구하기

    문제 설명이 문제에서는 크기가 N인 세 개의 배열 s1[], s2[], s3[]가 주어지며, 이 배열들은 N개의 삼각형을 나타냅니다. 우리의 과제는 주어진 N개의 삼각형 중에서 고유한(unique) 삼각형의 개수를 찾는 것입니다.삼각형이 고유하려면 세 변의 길이 조합이 모두 유일해야 합니다. 즉, 동일한 변의 조합을 가진 다른 삼각형이 존재하지 않아야 합니다.예시를 통해 문제를 이해해 보겠습니다.입력s1[] = {1, 5, 3} s2[] = {2, 3, 2} s3[] = {4, 2, 5}출력1설명변의 길이가 1, 2, 4인 삼각형만

  9. C++로 특정 범위 내에서 정확히 K개의 홀수 약수를 가진 숫자 찾기

    문제 개요 이 문제에서는 세 개의 정수 L, R, k가 주어집니다. 우리의 목표는 [L, R] 범위 안에서 정확히 k개의 홀수 개 약수를 가진 숫자의 개수를 구하는 것입니다. 단, 약수를 셀 때는 1과 그 수 자기 자신도 포함한다는 점에 유의해야 합니다. 예제로 문제 이해하기 입력: a = 3, b = 10, k = 3 출력: 2 설명: 3부터 10 사이에서 정확히 3개의 약수를 가진 숫자는 다음과 같습니다. 4 : 약수 = 1, 2, 4 9 : 약수 = 1, 3, 9 풀이 접근 방법 이 문제를 해결하는 핵심 열쇠는 다음과 같

  10. 주어진 범위에서 정확히 K개의 약수를 가진 숫자를 찾는 C++ 프로그램

    이 문제에서는 세 개의 정수 L, R, k가 주어집니다. 우리의 목표는 주어진 범위 [L, R] 안에서 정확히 k개의 약수를 가지는 숫자의 개수를 구하는 것입니다. 이때 1과 숫자 자기 자신도 약수로 포함하여 계산합니다.예제로 문제 이해하기입력a = 3, b = 10, k = 4출력2설명범위 3부터 10 사이에서 정확히 4개의 약수를 가지는 숫자는 다음과 같습니다. 6 : 약수 = 1, 2, 3, 6 8 : 약수 = 1, 2, 4, 8해결 접근 방법가장 직관적인 해결 방법은 범위 내의 모든 숫자에 대해 약수의 개수를 직접 세는 것입

  11. C++로 행렬에서 패턴의 방향(가로/세로) 찾기 – KMP 알고리즘 활용

    이 문제에서는 문자 값으로 구성된 행렬과 찾고자 하는 패턴이 주어집니다. 우리의 과제는 행렬 안에서 해당 패턴의 방향이 가로(horizontal)인지 세로(vertical)인지를 판별하는 것입니다.문제 이해를 위한 예시입력mat[][] = { { r, a, m }, { a, m, c }, { w, f, t } } 패턴 : raw출력vertical (세로)위 예시에서 raw라는 패턴은 행렬의 첫 번째 열을 위에서 아래로 읽었을 때(r → a → w) 나타나므로, 패턴의 방향은 세로(vertical)입니다.해결 접

  12. C++로 직각삼각형의 나머지 두 변과 세 각도 구하기

    이 문제에서는 직각삼각형의 한 변을 나타내는 정수 a가 주어집니다. 우리가 해야 할 일은 이 변 a를 포함하는 직각삼각형이 성립할 수 있는지 확인하고, 가능하다면 나머지 두 변과 세 내각의 크기를 구하는 것입니다.문제 이해를 위한 예시입력a = 5출력변 : 5, 12, 13 각도 : 67.38°, 22.62°, 90°설명세 변은 피타고라스 정리를 만족합니다. 즉, 52 + 122 = 132 입니다. 그리고 이 변들을 이용해 각도를 구할 수 있습니다. 역사인 함수를 사용하면 Sin-1(5/13) ≈ 22.62°이고, 나머지 예각은 9

  13. C++로 직각삼각형의 나머지 두 변 구하기

    문제 개요이 문제에서는 직각삼각형의 한 변을 나타내는 정수 a가 주어집니다. 우리가 해야 할 일은 변 a를 포함하는 직각삼각형이 성립할 수 있는지 확인하고, 성립한다면 나머지 두 변의 값을 구하는 것입니다.예제로 문제 이해하기입력a = 5출력Sides : 5, 12, 13설명구해진 세 변은 피타고라스 정리를 만족합니다. 즉, 52 + 122 = 132 이 성립하므로 5, 12, 13은 유효한 직각삼각형의 세 변입니다.풀이 접근 방법이 문제의 가장 간단한 해결책은 피타고라스 정리(Pythagorean theorem)를 활용하는 것입니

  14. C++로 배열에서 합이 이미 배열 안에 존재하는 쌍 찾기

    문제 개요이 문제에서는 N개의 정수로 구성된 배열 arr[]가 주어집니다. 우리의 과제는 배열에서 두 원소의 합이 그 자체로 배열 안에 이미 존재하는 모든 쌍(pair)을 찾는 것입니다.예시를 통해 문제를 이해해 보겠습니다.입력arr[] = {1, 2, 4, 6, 7}출력(1, 6), (2, 4)설명쌍 (1, 6)의 경우, 두 값의 합은 7이며 이 값은 배열에 존재합니다.쌍 (2, 4)의 경우, 두 값의 합은 6이며 이 값 역시 배열에 존재합니다.해결 방법 1: 브루트 포스(Brute Force)가장 단순한 해결 방법은 배열의 원소

  15. C++ 이중 연결 리스트에서 주어진 합이 되는 쌍 찾기

    이 문제에서는 이중 연결 리스트(doubly linked list)와 하나의 합(sum) 값이 주어지며, 연결 리스트 안에서 두 노드 값의 합이 주어진 합과 일치하는 모든 쌍(pair)을 찾아야 합니다.문제 이해를 위한 예시입력head − 2 <-> 5 <-> 6 <-> 9 <-> 12x = 11출력(2, 9), (5, 6)설명쌍 (2, 9): 2 + 9 = 11쌍 (5, 6): 5 + 6 = 11해결 방법 1: 중첩 반복문(브루트 포스)가장 단순한 방법은 연결 리스트 전체를 순

  16. C++로 삼각형의 둘레 구하기 – 종류별 공식과 코드 예제

    개요 이 글에서는 삼각형의 둘레(Perimeter)가 무엇인지, 삼각형의 종류에 따라 어떤 둘레 공식이 사용되는지 알아보고, C++ 코드를 통해 실제로 둘레를 계산하는 방법까지 단계별로 살펴보겠습니다. 둘레(Perimeter)란? 둘레란 도형의 가장자리를 따라 한 바퀴 돌 때의 총 거리를 의미합니다. 즉, 주어진 도형을 이루는 모든 변의 길이를 단순히 더한 값입니다. 삼각형의 둘레 삼각형은 세 개의 변으로 이루어진 도형이므로, 삼각형의 둘레는 세 변의 길이를 모두 합한 값과 같습니다. 공식: 둘레 = 모든 변의 길이의 합Peri

  17. C++로 이진 행렬에서 1로 이루어진 도형의 둘레 구하기

    이 문제에서는 0과 1로만 구성된 크기 n×m의 이진 행렬 bin[][]이 주어집니다. 우리의 목표는 이진 행렬에서 1들이 만드는 도형의 둘레(perimeter)를 구하는 것입니다.여기서 둘레란 도형을 모든 방향에서 둘러싸는 경계의 길이를 의미합니다. 예를 들어, 값이 하나뿐인 경우 둘레는 4가 됩니다.예제로 문제 이해하기입력bin[][] = [1, 0] [1, 0]출력6설명셀 (0,0)과 (1,0)이 서로 연결되어 가로 2, 세로 1인 직사각형을 형성합니다. 따라서 둘레는 2×(2+1) = 6이 됩니다.해결 접근 방법가장 간

  18. C++에서 숫자의 공손도(Politeness) 구하기

    이 문제에서는 양의 정수 N이 주어지고, 우리의 목표는 이 숫자의 공손도(politeness)를 구하는 것입니다.공손한 수(Polite Number)란 두 개 이상의 연속된 자연수의 합으로 표현할 수 있는 수를 의미합니다.숫자의 공손도는 그 수를 연속된 정수의 합으로 나타낼 수 있는 서로 다른 방법의 개수로 정의됩니다.예제를 통해 문제를 살펴보겠습니다.입력n = 5출력1설명2 + 3 = 5 가 유일한 연속 합 표현입니다.해결 접근 방법가장 직관적인 해결책은 N 이하의 모든 연속 수열을 하나씩 검사하여 그 합이 N과 일치할 때마다 카

  19. C++로 정렬된 무한 배열에서 특정 요소의 위치 찾기

    이 문제에서는 무한히 이어지는 정렬된 숫자 배열이 주어집니다.우리의 과제는 정렬된 무한 배열 안에서 특정 요소의 위치(인덱스)를 찾는 것입니다.문제 이해하기예시를 통해 문제를 살펴보겠습니다.입력arr[] = {2, 4, 6, 8, 9, 12, 14, 17, ...}, ele = 9출력4배열은 계속 이어지지만 끝 지점을 알 수 없다는 점이 핵심입니다. 즉, 일반적인 방식으로 배열의 크기를 먼저 확인할 수 없습니다.해결 접근 방법정렬된 배열에서 요소를 효율적으로 찾으려면 이진 탐색(Binary Search)을 사용하는 것이 가장 좋습니

  20. C++로 두 숫자의 가장 왼쪽 서로 다른 비트 위치 찾기

    문제 설명이 문제에서는 두 개의 정수 num1과 num2가 주어지며, 두 숫자를 이진수로 표현했을 때 왼쪽에서 처음으로 서로 다른 비트(최상위 불일치 비트)의 위치를 찾아 출력하는 것이 목표입니다.두 이진수의 자릿수가 다를 경우 올바른 비교를 위해 자릿수가 적은 숫자 앞에 0을 채워 길이를 동일하게 맞춰야 합니다.입력 예시num1 = 4, num2 = 7출력 예시1설명숫자 4의 이진 표현은 100입니다.숫자 7의 이진 표현은 111입니다.왼쪽에서 첫 번째 비트가 서로 다르므로 결과는 1이 됩니다.해결 접근 방법이 문제를 해결하는 한

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:262/300  20-컴퓨터/Page Goto:1 256 257 258 259 260 261 262 263 264 265 266 267 268