문제 개요정수 N이 입력으로 주어졌을 때, num + Rev(num) = 10N − 1을 만족하는 모든 N자리 수의 개수를 구하는 것이 목표입니다. 여기서 Rev(num)은 숫자 num의 자릿수 순서를 뒤집은 수를 의미합니다.예시입력N=4출력num + Rev(num) = 10N − 1을 만족하는 N자리 수의 개수는 90개입니다.설명해당하는 숫자들은 다음과 같습니다. 1. 1188 + 8811 = 9999 2. 2277 + 7722 = 9999 3. 1278 + 8721 = 9999 ……총 90개의 숫자입력N=5출력num + Rev
문제 개요두 개의 정수 one(배열의 길이)과 another(요소의 최댓값)가 주어집니다. 목표는 다음 조건을 모두 만족하는 배열의 개수를 구하는 것입니다.배열의 모든 요소는 1 이상 another 이하의 범위 안에 있어야 합니다.인접한 두 요소마다 한쪽이 다른 쪽을 나누어 떨어지게 해야 합니다. 즉, 임의의 i에 대해 arr[i]가 arr[i+1]의 약수 또는 배수여야 합니다.배열의 길이는 정확히 one이어야 합니다.예제 1입력one = 3, another = 2출력인접한 요소끼리 서로를 나누는 배열의 개수: 8설명가능한 배열은
정수 N이 입력으로 주어졌을 때, N 이하의 숫자 중에서 자릿수가 오직 0과 1로만 이루어진 수(2진수 형태의 숫자)가 몇 개 있는지 구하는 것이 이 문제의 목표입니다. 예를 들어 입력 N이 12라면, 조건을 만족하는 수는 1, 10, 11로 총 3개이므로 답은 3이 됩니다. 예시 입력 N=100 출력 N 이하의 2진수 형태 숫자의 개수: 4 설명 100 이하의 2진수 형태 숫자: 1, 10, 11, 100 입력 N=120 출력 N 이하의 2진수 형태 숫자의 개수: 7 설명 120 이하의 2진수 형태 숫자: 1, 10, 11, 1
여러 개의 구간(interval)이 담긴 2차원 배열 arr[][]와 하나의 숫자 value가 주어졌다고 가정해 봅시다. 이때 우리의 목표는 value가 속해 있는 구간이 총 몇 개인지 찾아내는 것입니다.예를 들어 구간이 [ [1,5], [3,7] ]이고 value가 4라면, 4는 두 구간 모두에 포함되므로 결과는 2가 됩니다.입력/출력 예시예시 1입력:arr[4][2] = { { 1, 20 }, { 12, 25 }, { 32, 40 }, { 15, 18 } }, value = 16출력:주어진 값이 포함된 구간의 개수: 3설명: 값
숫자 0부터 9까지 각 자릿수에 포함된 구멍(닫힌 공간)의 개수를 저장한 배열 holes[10]이 주어졌을 때, 입력으로 주어진 정수 안에 구멍이 총 몇 개 있는지 계산하는 문제입니다. 일반적인 숫자 모양에서 구멍의 개수는 다음과 같이 정의됩니다.0 → 1개4 → 1개6 → 1개8 → 2개9 → 1개나머지 숫자(1, 2, 3, 5, 7) → 0개따라서 holes[] 배열은 다음과 같이 초기화할 수 있습니다.holes[] = { 1, 0, 0, 0, 1, 0, 1, 0, 2, 1 }예제입력number = 239143출력정수에 포함된
양의 정수로 이루어진 배열 arr[]가 주어졌을 때, 길이가 1 이상인 모든 부분 배열 중 증가하지 않는(non-increasing) 부분 배열의 개수를 구하는 것이 목표입니다. 여기서 증가하지 않는이란 각 원소가 바로 앞의 원소보다 크지 않다는 의미, 즉 앞 원소 ≥ 뒤 원소의 관계가 성립함을 뜻합니다. 예를 들어 arr[] = {1, 3, 2}라면 조건을 만족하는 부분 배열은 {1}, {2}, {3}, {3, 2}의 4개입니다. 예시 입력 arr[] = {5, 4, 4, 5} 출력 증가하지 않는 부분 배열의 개수: 7 설명 {
양의 정수로 이루어진 배열 arr[]과 값 match가 주어졌을 때, 원소들의 XOR 값이 match와 일치하는 부분집합의 개수를 구하는 것이 목표입니다. 예제 입력 arr[] = {4, 2, 8, 10}, match = 12 출력 XOR 값이 12인 부분집합의 개수: 2 설명 원소들의 XOR이 12가 되는 부분집합은 다음과 같습니다. [4, 8], [4, 2, 10] 입력 arr[] = {3, 5, 2, 7}, match = 5 출력 XOR 값이 5인 부분집합의 개수: 2 설명 원소들의 XOR이 5가 되는 부분집합은 다음과 같습니
세 개의 정수 R, G, B가 주어지고, 문자열은 오직 R, G, B 세 글자로만 구성됩니다. 목표는 각 글자가 최소한 R개, G개, B개씩 포함되도록 만들 수 있는 문자열의 총 개수를 구하는 것입니다. 단, R + G + B의 합은 만들 수 있는 문자열의 길이보다 작거나 같아야 합니다.입력 예시 1R = 1, G = 1, B = 1, length = 3출력주어진 조합으로 만들 수 있는 문자열(R, G, B)의 개수: 6설명가능한 문자열은 다음과 같습니다: RGB, RBG, BRG, BGR, GRB, GBR. 즉, RGB의 모든 순
지불해야 할 루피 금액(pay_rupees)이 주어져 있고, 액면가가 각각 Rupees_amount_1과 Rupees_amount_2인 두 종류의 지폐를 무한히 보유하고 있다고 가정해 보겠습니다. 목표는 정확히 distribution_total장의 지폐만 사용하여 pay_rupees를 지불하는 것이며, 이때 필요한 Rupees_amount_1 지폐의 장수를 계산하는 것입니다. 만약 조건에 맞게 지불할 방법이 없다면 −1을 답으로 반환해야 합니다.입력 예시Rupees_amount_1 = 1, Rupees_amount_2 = 5, pa
문제 정의정수로만 이루어진 배열 arr[ ]와 홀수인 값 sum이 주어졌을 때, 각 arr_2[i]가 arr[ ]의 이전 sum/2개 요소 + arr[i] + 다음 sum/2개 요소의 합이 되도록 합계 배열 arr_2[ ]를 구성하는 것이 목표입니다. 만약 sum이 1이라면 arr_2[i] = arr[i]가 됩니다.예시입력 1arr[] = { 4, 1, 7, 5, 2, 9, 6, 2, 1 }, sum = 3출력 1주어진 범위 내 요소들의 합으로 합계 배열 구성 결과: 5 12 13 14 16 17 17 9 3설명 1합계 배열은 다음
포리스트(forest, 트리들의 집합)를 구성하는 정점들이 주어졌을 때, 해당 포리스트 안에 몇 개의 트리가 존재하는지 구하는 것이 목표입니다. 이 문제는 DFS(깊이 우선 탐색) 알고리즘을 활용하면 간단하게 해결할 수 있습니다.예시입력edges = { { 1,3 }, {2,8}, {2,6}, {3,5}, {3,7}, {4,8} }출력Count of number of trees in a forest are: 3설명주어진 간선들로 연결된 컴포넌트는 총 3개이며, 각각 하나의 트리를 이룹니다.접근 방법그래프에 재귀적으로 DFS를 수행하
두 개의 문자열 numo와 demo가 입력으로 주어졌을 때, 두 문자열이 공통으로 가지는 약수(공약수)의 개수를 구하는 것이 목표입니다. 여기서 문자열의 약수(divisor)는 다음과 같이 정의됩니다. 부분 문자열 sub1이 문자열 str의 약수가 되려면, sub1을 여러 번 반복하여 str 전체를 만들어낼 수 있어야 합니다. 예를 들어 str = abcabcabc일 때 sub1 = abc는 str의 약수입니다.예제입력 1numo = abababab demo = abababababababab출력 1주어진 문자열의 공약수 개수: 3설
문제 설명숫자 배열 arr[]와 정수 x가 입력으로 주어졌을 때, 부분집합에 포함된 개별 원소와 그 원소들의 합이 모두 x로 완전히 나누어 떨어지는 모든 부분집합의 개수를 구하는 것이 목표입니다.예시 1입력arr[] = {1,2,3,4,5,6}, x = 3출력주어진 조건을 만족하는 부분집합의 개수 : 3설명[3], [6], [3,6]x가 3일 때 배열에서 3으로 나누어 떨어지는 원소는 3과 6뿐입니다. 이 원소들로 만들 수 있는 부분집합은 [3], [6], [3,6]의 세 가지이며, 각 원소와 그 합(9) 모두 3으로 나누어 떨어지
한 변의 길이를 나타내는 숫자 size가 입력으로 주어집니다. 목표는 size × size 크기의 체스판 내부에서 만들 수 있는 정사각형 중, 변의 길이가 홀수인 것들의 개수를 구하는 것입니다.예제로 이해하기입력size=3출력체스판에서 변의 길이가 홀수인 정사각형의 개수: 10설명아래 그림과 같이 모든 정사각형이 표시되며, 여기에는 판 전체를 덮는 3×3 크기의 정사각형 1개도 포함됩니다.입력size=4출력체스판에서 변의 길이가 홀수인 정사각형의 개수: 20설명1×1 크기의 정사각형이 총 16개 있고, 그 안에 3×3 크기의 정사각
이진 트리(binary tree)와 값 x가 입력으로 주어졌을 때, 노드 가중치의 합이 정확히 x가 되는 서브트리(subtree)가 몇 개 존재하는지 찾는 것이 이 문제의 목표입니다. 문제 예시 입력 x = 14. 값들을 입력한 후 생성되는 트리는 아래와 같습니다. 출력 Count of subtrees that sum up to a given value x are: 1 설명 x 값이 14로 주어졌습니다. 그림에서 확인할 수 있듯이 값이 14인 리프 노드는 하나뿐이므로 개수는 1이 됩니다. 입력 x = 33. 값들을 입력한 후 생성
문제 소개각 노드에 가중치가 할당된 이진 트리가 주어졌을 때, 목표는 노드 가중치의 자릿수 합이 홀수가 되는 노드의 개수를 찾는 것입니다. 예를 들어 가중치가 12라면 자릿수의 합은 1+2=3으로 홀수이므로 해당 노드를 셉니다.예시입력값을 입력한 후 생성되는 트리는 아래와 같습니다 −출력가중치 자릿수의 합이 홀수인 노드의 개수: 2설명트리의 각 노드와 노드에 연결된 가중치가 주어집니다. 이제 모든 가중치의 자릿수 합을 계산하고 홀수인지 여부를 확인합니다.노드가중치자릿수 합홀수 여부2232+3=5예11411+4+1=6아니오
각 노드에 가중치가 할당된 이진 트리가 주어졌을 때, 가중치가 2의 거듭제곱인 노드의 개수를 구하는 것이 목표입니다. 예를 들어 어떤 노드의 가중치가 32라면 32는 2⁵이므로 이 노드는 개수에 포함됩니다. 예제 입력 및 출력 입력 값을 입력하면 아래와 같은 트리가 생성됩니다. 출력 가중치가 2의 거듭제곱인 노드의 개수: 3 설명 각 노드에는 고유한 번호와 그에 대응하는 가중치가 주어져 있습니다. 모든 노드의 가중치를 하나씩 확인하여 해당 값이 2의 거듭제곱으로 표현되는지 검사한 뒤, 조건을 만족하는 노드만 셉니다. 노드가중치
문제 설명각 노드에 가중치가 부여된 이진 트리가 주어졌을 때, 가중치가 완전제곱수(perfect square)인 노드의 개수를 구하는 것이 목표입니다. 예를 들어 어떤 노드의 가중치가 36이라면 36 = 6²이므로 완전제곱수에 해당하며, 이 노드는 개수에 포함됩니다.예시입력 1값을 입력하여 생성한 트리는 다음과 같습니다 −출력 1가중치가 완전제곱수인 노드의 개수: 4설명트리의 노드들과 각 노드에 연결된 가중치가 주어집니다. 이제 각 노드의 가중치가 완전제곱수인지 하나씩 확인해 보겠습니다.노드가중치완전제곱수포함 여부212111 × 1
노드의 가중치가 문자열로 주어진 이진 트리가 있다고 가정해 보겠습니다. 이때 목표는 가중치 문자열에 모음(a, e, i, o, u)이 하나라도 포함된 노드의 개수를 구하는 것입니다. 예를 들어 어떤 노드의 가중치가 aer이라면 a와 e라는 모음이 포함되어 있으므로, 이 노드는 개수에 포함됩니다.예제 1입력값을 입력한 후 생성되는 트리는 아래와 같습니다.출력모음이 포함된 문자열 가중치를 가진 트리 노드의 개수: 5설명각 트리 노드와 노드에 연결된 문자열 가중치가 주어집니다. 이제 각 노드의 문자열에 모음이 포함되어 있는지 확인합니다.
주어진 언어 L에 대해 푸시다운 오토마타(Pushdown Automata)를 구성하는 것이 목표입니다. 이 언어에서는 0의 개수가 1의 개수와 2의 개수의 합과 같아야 하며, 1과 2는 각각 최소 한 번 이상 나타나거나 문자열이 NULL(빈 문자열)일 수도 있습니다. 이러한 모든 문자열은 오토마타에 의해 수용되어야 합니다.푸시다운 오토마타란?푸시다운 오토마타(PDA)는 정규 문법을 위해 결정적 유한 오토마타(DFA)를 설계하는 것과 유사한 방식으로 문맥 무관 문법(Context-Free Grammar)을 구현하는 기법입니다. DFA