문제 개요 정수 num이 입력으로 주어졌을 때, 이 숫자를 두 개 이상의 연속된 자연수의 합으로 표현할 수 있는 방법의 수를 구하는 것이 목표입니다. 예를 들어 num이 3이라면 1+2로 표현할 수 있으므로 총 1가지 방법이 존재합니다. 예제 1 입력: num = 6 출력: Count of ways to express a number as sum of consecutive numbers are: 1 설명: num을 연속된 자연수의 합으로 표현하는 방법은 1+2+3 한 가지뿐입니다. 예제 2 입력: num = 19 출력: Count
두 개의 정수 num과 power가 입력으로 주어졌을 때, num을 서로 다른 자연수들을 주어진 거듭제곱한 값들의 합으로 표현할 수 있는 방법의 수를 구하는 것이 목표입니다.예를 들어 num이 10이고 power가 2라면, 10은 12 + 32로 표현할 수 있으므로 총 1가지 방법이 존재합니다.입력 예시num=30출력거듭제곱의 합으로 숫자를 표현하는 방법의 수: 2설명30을 거듭제곱의 합으로 표현하는 방법:12 + 22 + 52 와 12 + 22 + 32 + 42입력 예시num=35출력거듭제곱의 합으로 숫자를 표현하는 방법의 수:
문제 개요타자가 만들어야 할 총 득점(run)이 주어집니다. 목표는 한 번의 공에서 타자가 1점 또는 2점만 얻어 정확히 그 점수에 도달하는 모든 방법의 수를 구하는 것입니다. 단, 2점이 연속으로 나와서는 안 된다는 제약 조건이 있습니다.예를 들어 목표 점수가 6이라면 1+2+1+2처럼 도달할 수 있지만, 2+2+1+1처럼 2가 연속되는 방식은 허용되지 않습니다.예제 1입력:score = 4출력:연속된 2 없이 1과 2를 사용해 점수에 도달하는 방법의 수: 4설명: 점수 4에 도달할 수 있는 방법은 다음과 같습니다.1+1+1+1,
8×8 격자 형태의 체스판 위에서 비숍(Bishop)의 위치가 행(row)과 열(column) 좌표로 주어집니다. 이 글의 목표는 비숍이 한 번의 이동으로 방문할 수 있는 칸의 총 개수를 구하는 것입니다. 체스 규칙에 따르면 비숍은 대각선 방향, 즉 왼쪽 위·아래, 오른쪽 위·아래 네 방향으로 원하는 만큼 이동할 수 있습니다.입력 및 출력 예시예시 1입력:row = 5, column = 4출력:비숍이 한 번의 이동으로 방문할 수 있는 칸의 개수: 13설명: 비숍이 (5, 4) 위치에 있으면 네 개의 대각선 방향으로 각각 3칸, 3칸
양수로 이루어진 배열과 두 정수 A, B가 주어집니다. 두 명의 플레이어가 배열 속 숫자를 조작하는 게임을 진행하는데, 플레이어 1은 배열의 임의의 원소를 A만큼 감소시킬 수 있고, 플레이어 2는 임의의 원소를 B만큼 증가시킬 수 있습니다. 목표는 플레이어 1이 0 이하로 만들 수 있는 숫자의 개수를 구하는 것입니다. 플레이어 1이 선공을 하며, 한 번 0 이하로 줄어든 숫자는 플레이어 2가 더 이상 조작할 수 없습니다. 예제 입력 및 출력 예제 1 arr[] = { 1, 4, 5, 2 }, A = 2, B = 3 출력: 게임에
row × col 크기의 2차원 행렬이 주어졌을 때, 셀 (0,0)에서 출발하여 셀 (row, col)까지 도달하는 경로의 가짓수를 구하는 것이 목표입니다. 단, 이동은 오른쪽 또는 아래쪽 방향만 허용됩니다. 즉, 첫 번째 이동은 (0,0)에서 (0,1)(아래) 또는 (1,0)(오른쪽)으로 갈 수 있으며, 대각선 이동(1,1)은 불가능합니다.예시입력col = 2; row = 4출력행렬을 순회하는 방법의 수: 4설명(0,0)에서 (2,4)까지 도달할 수 있는 경로는 다음 그림과 같습니다.입력col = 4; row = 3출력행렬을 순회
두 개의 숫자 n과 m이 주어지며, 각각 방 바닥의 길이와 너비를 나타냅니다. 이때 목표는 1×m 크기의 타일을 사용하여 n×m 크기의 바닥을 채울 수 있는 서로 다른 배치 방법의 수를 구하는 것입니다.예시입력n = 3, m = 2출력1 x m 크기 타일로 n x m 크기 바닥을 채우는 방법의 수: 3설명세 개의 1×2 타일을 아래 그림과 같이 배치할 수 있는 방법이 총 세 가지입니다.입력n = 3, m = 3출력1 x m 크기 타일로 n x m 크기 바닥을 채우는 방법의 수: 2설명세 개의 1×3 타일을 모두 세로로 배치하거나,
영어 알파벳으로 이루어진 문자열 str이 주어졌을 때, str의 모든 부분 문자열에 등장하는 모음의 총 개수를 구하는 것이 목표입니다. 예를 들어 문자열이 abcde라면 부분 문자열은 a, b, c, d, e, ab, bc, cd, de, abc, bcd, cde, abcd, bcde, abcde가 되며, 이들 안에 포함된 모음의 개수는 총 10개입니다(a와 e가 여러 번 등장). 예시 입력 str = aloe 출력 주어진 문자열의 모든 부분 문자열에 등장하는 모음의 개수: 14 설명 부분 문자열은 다음과 같습니다. a, l, o,
양의 정수로 이루어진 배열 arr[ ]가 주어졌을 때, 우리의 목표는 arr[ ]의 모든 부분 배열(subarray) 중에서 해당 부분 배열에 포함된 원소들의 평균이 포함되지 않은 나머지 원소들의 평균보다 큰 부분 배열의 개수를 구하는 것입니다. 예제 입력 arr[ ] = { 3, 2, 4 } 출력 부분 배열에 포함된 원소의 평균이 포함되지 않은 원소의 평균보다 큰 부분 배열의 개수: 2 설명 가능한 부분 배열은 다음과 같습니다. [ 3 ], [ 2 ], [ 4 ], [ 3,2 ], [ 2,4 ], [ 3,2,4 ] [ 4 ]의
직사각형들의 두 변이 배열로 주어지고, 범위를 나타내는 변수 first와 last가 있다고 가정해 봅시다. 이때 목표는 변 길이의 비율(긴 변 ÷ 짧은 변)이 [first, last] 범위 안에 속하는 직사각형의 개수를 구하는 것입니다. 예제 1 입력 rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190 }, { 180, 200 }, { 300, 200 } }, first = 1.0, last = 1.6 출력 변의 비율이 범위 [a, b] 내에 있는 직사각형의 개수: 4 설명 비율이 [1.0, 1.6
양의 정수로 이루어진 배열 arr[]과 GCD(최대공약수) 값들이 담긴 배열 GCD[]가 주어졌을 때, arr[]의 원소들로 만들 수 있는 부분집합 중에서 GCD[]에 명시된 GCD 값을 갖는 부분집합의 개수를 구하는 것이 목표입니다.예제 1입력arr[] = {10, 5, 6, 3}, GCD[] = {2, 3, 5}출력주어진 GCD와 같은 값을 가지는 집합의 부분집합 개수: 1 2 2설명GCD가 2인 부분집합은 [10, 6] 입니다. GCD가 3인 부분집합은 [3], [6, 3] 입니다. GCD가 5인 부분집합은 [5], [10,
양수로만 이루어진 배열 arr[]가 주어졌을 때, 부분 집합을 구성하는 값들의 중앙값(median)이 그 부분 집합 자체에도 포함되어 있는 경우의 수를 모두 세는 것이 이 문제의 목표입니다.예시로 이해하기입력arr[] = { 1,2,3 }출력중앙값이 동일한 부분 집합 안에 존재하는 부분 집합의 개수: 4설명중앙값이 집합 자체에 포함된 부분 집합은 다음과 같습니다. [ 1 ] → 중앙값 1 [ 2 ] → 중앙값 2 [ 3 ] → 중앙값 3 [ 1,2,3 ] → 중앙값 2입력arr[] = { 4,6,5 }출력중앙값
소문자 알파벳으로만 이루어진 문자열 str과 정수 k가 주어졌을 때, str에서 만들 수 있는 모든 부분 문자열 중 정확히 k개의 서로 다른 문자를 포함하는 경우의 개수를 구하는 것이 목표입니다. 예시 입력 str = pqr, k = 2 출력 정확히 k개의 서로 다른 문자를 가진 부분 문자열의 개수: 2 설명 정확히 2개의 서로 다른 문자를 가진 부분 문자열은 pq, qr입니다. 입력 str = stristr, k = 4 출력 정확히 k개의 서로 다른 문자를 가진 부분 문자열의 개수: 10 설명 정확히 4개의 서로 다른 문자를 가진
정수 num이 입력으로 주어졌을 때, 곱 11 × 22 × 33 × … × numnum의 끝에 연속해서 붙는 0(후행 0, trailing zero)의 개수를 구하는 것이 목표입니다. 예시로 이해하기 입력 num=5 출력 (1^1)*(2^2)*(3^3)*(4^4)*.. 의 후행 0 개수: 5 설명 곱에 포함된 2와 5의 개수는 다음과 같습니다. 1^1 × 2^2 × 3^3 × 4^4 × 5^5 = 1^1 × 2^2 × 3^3 × (2^2)^4 × 5^5 → 2는 총 10개, 5는 총 5개 → 최솟값은 5이므로 후행 0은 5개
문제 개요정수 num이 입력으로 주어졌을 때, C++의 bitset을 사용하여 해당 숫자의 이진 표현에서 뒤쪽에 연속해서 나오는 0(후행 0, trailing zeroes)의 개수를 구하는 것이 목표입니다.bitset은 0과 1의 비트 값을 저장하는 자료구조로, 하나의 비트 배열처럼 동작합니다. 각 비트에 인덱스로 접근할 수 있어 이진수 관련 문제를 손쉽게 처리할 수 있습니다.예제입력num = 10출력Bitset을 사용한 이진 표현의 후행 0 개수: 1설명10을 이진수로 표현하면 1010이므로, 뒤에 붙어 있는 0은 1개입니다.입력
양의 정수로 구성된 배열이 주어졌을 때, 각 요소는 해당 인덱스에서 한 번에 점프할 수 있는 최대 칸 수를 의미합니다. 이 문제의 목표는 각 요소에서 출발하여 배열의 끝에 도달할 수 있는 서로 다른 점프 경로의 수를 구하는 것입니다.예를 들어 arr[] = [1, 2, 3]인 경우를 살펴보겠습니다. 값이 1인 요소는 1칸만 점프할 수 있고, 값이 2인 요소는 1칸 또는 2칸을, 값이 3인 요소는 1칸, 2칸, 3칸 중 원하는 만큼 점프할 수 있습니다.예제 1입력arr[] = {1, 2, 3}출력배열 끝에 도달하는 점프 방법의 수:
문제 소개 두 개의 숫자 e(원소의 개수)와 p(파티션의 수)가 주어졌을 때, 집합의 e개 원소를 p개의 파티션(부분 집합)으로 나눌 수 있는 모든 경우의 수를 구하는 것이 목표입니다. 예제 입력 e=4 p=2 출력 Count of number of ways to partition a set into k subsets are: 7 설명 원소가 a, b, c, d일 때 이를 2개의 파티션으로 나누는 방법은 다음과 같습니다. (a,b,c)-(d), (a,b)-(c,d), (a,b,d)-(c), (a)-(b,c,d), (a,c)-(b,
문제 정의 두 정수 N과 K가 주어졌을 때, 아래 조건을 모두 만족하는 수의 개수를 구하는 것이 목표입니다. 구하려는 수는 N 이하이어야 합니다. 그 수 이하에 존재하는 소수의 개수를 count라고 할 때, |수 − count| ≥ K를 만족해야 합니다. 예제 1 입력 N = 5, K = 2 출력 N 이하의 수 중 소수 개수와의 차이가 K 이상인 수의 개수: 2 설명조건을 만족하는 수는 다음과 같습니다.5 (5 − 2 ≥ 2)와 4 (4 − 2 ≥ 2) 예제 2 입력 N = 10, K = 6 출력 N 이하의 수 중 소수 개수와의
숫자 배열과 스택이 주어졌을 때, 배열의 모든 요소는 이미 스택 안에 들어 있다고 가정합니다. 이때 목표는 배열의 각 요소를 개별적으로 얻기 위해 필요한 팝(pop) 연산의 횟수를 구하는 것입니다.스택에는 요소가 내림차순으로 채워져 있습니다. 즉, 첫 번째 요소가 가장 크고, 맨 위(top)에 있는 요소가 가장 작습니다.예제 1입력Stack [ 7,6,2,1 ] array : 2,1,6,7출력Count of number of pop operations on stack to get each element of the array are
문제 개요두 정수 A와 B가 주어졌을 때, A % X = B를 만족하는 X 값이 총 몇 가지인지 구하는 것이 이 문제의 목표입니다. A와 B의 크기 관계에 따라 답이 완전히 달라지므로, 먼저 세 가지 경우를 살펴보겠습니다.A == B인 경우: X가 A보다 크기만 하면 A % X = A = B가 항상 성립하므로 가능한 X는 무한히 많습니다. 이때는 -1을 반환합니다.A < B인 경우: 나머지는 항상 나누는 수보다 작고 A 자신을 넘을 수도 없으므로, A % X = B를 만족하는 X는 존재하지 않습니다. 이때는 0을 반환합니다.A