숫자 시퀀스를 나타내는 문자열이 하나 주어집니다. 각 숫자는 1부터 26까지의 영어 알파벳으로 디코딩할 수 있습니다. 즉, 1은 A, 2는 B처럼 대응되며 26은 Z가 됩니다. 이때 목표는 주어진 숫자 시퀀스로 만들 수 있는 모든 디코딩의 개수를 구하는 것입니다. 예를 들어 시퀀스가 123이라면 가능한 디코딩은 ABC(1-2-3), LC(12-3), AW(1-23)의 세 가지이므로 정답은 3입니다. 예제로 이해하기 입력 − str[]="1532" 출력 − 주어진 숫자 시퀀스의 가능한 디코딩
높이(height)와 너비(width)가 주어진 직사각형이 있고, 이 직사각형은 왼쪽 아래 모서리가 원점 (0, 0)에 위치한 2차원 좌표계 위에 놓여 있습니다. 이때 목표는 다음 조건을 모두 만족하는 마름모가 직사각형 내부에 몇 개나 만들어질 수 있는지 세는 것입니다.마름모의 넓이는 0보다 커야 합니다.마름모의 두 대각선은 각각 x축과 y축에 평행해야 합니다.마름모의 네 꼭짓점은 모두 정수 좌표를 가져야 합니다.예제예제 1입력 − 길이 = 3, 너비 = 3출력 − 주어진 크기의 직사각형 내부에 만들 수 있는
문제 개요 자릿수를 나타내는 숫자 d가 주어집니다. 목표는 최대 d자릿수이면서 숫자 0을 적어도 하나 포함하는 양의 정수의 개수를 구하는 것입니다. 즉, 1자릿수, 2자릿수, 3자릿수 … d자릿수인 모든 양의 정수 중 0이 하나라도 들어 있는 수를 전부 세어야 합니다. 수학적 배경 먼저 “d자릿수이면서 0을 적어도 하나 포함하는 수”가 몇 개인지 구해 보겠습니다. 예를 들어 d=3일 때, 0을 하나 이상 포함하는 3자릿수를 만들 수 있는 경우의 수는 다음과 같습니다. 백의 자리(d1): 1~9 → 9가지 십의 자리(d2): 0~9
문제 설명숫자 배열 nums와 정수 k가 주어졌다고 가정해 보겠습니다. 우리는 nums에 최소한의 숫자를 삽입하여, [1, k] 범위 내의 어떤 숫자든 nums의 부분집합(원소들의 합)으로 표현할 수 있도록 만들어야 합니다.예를 들어 입력이 nums = [3, 5], k = 6이라면 출력은 2가 됩니다. 1과 2를 삽입하면 다음과 같이 1부터 6까지의 모든 숫자를 만들 수 있기 때문입니다.1 = [1]2 = [2]3 = [3]4 = [1, 3]5 = [5]6 = [1, 5]접근 방법이 문제는 그리디(Greedy) 알고리즘으로 효율적
두 개의 숫자 num_1과 num_2가 주어졌을 때, 이 두 숫자를 더하는 과정에서 발생하는 캐리(받아올림) 연산의 횟수를 구하는 것이 목표입니다. 예를 들어 123과 157을 더하면 캐리 연산은 1번 발생합니다. (7+3=10, 1+2+5=8, 1+1=2)예시로 이해하기입력 − num_1=432, num_2=638출력 − 두 숫자를 더하는 데 필요한 캐리 연산 횟수: 2설명 − 오른쪽에서 왼쪽으로 자릿수를 더하며 캐리를 세면 다음과 같습니다.(2+8=10, carry 1 ) count=1, (3+3+1=7, carry 0 ) co
문제 개요 하나의 숫자 N이 주어졌을 때, 1부터 N 사이의 숫자들 중에서 두 수의 곱이 두 수의 합으로 나누어떨어지는 쌍의 개수를 구하는 것이 목표입니다. 예시를 통해 자세히 살펴보겠습니다. 입력 − N=11 출력 − 곱이 합으로 나누어떨어지는 쌍의 개수: 1 설명 − 숫자 3과 6의 곱은 18이고, 두 수의 합은 9입니다. 9는 18을 나머지 없이 완전히 나눌 수 있습니다. 입력 − N=30 출력 − 곱이 합으로 나누어떨어지는 쌍의 개수: 12 설명 − 조건을 만족하는 쌍은 다음과 같습니다. (3, 6), (4, 12), (5,
정수 배열이 주어지며, 각 원소는 -1000부터 1000 사이의 범위에 있다고 가정합니다. 우리의 목표는 두 원소의 평균값 역시 그 배열 안에 존재하는 원소 쌍(pair)의 개수를 찾는 것입니다.예를 들어 배열이 arr[] = [1, 2, 3, 4]라면, 조건을 만족하는 쌍은 (1, 3)과 (2, 4)입니다. 1과 3의 평균은 2이고, 2와 4의 평균은 3인데, 2와 3 모두 배열에 존재하기 때문입니다. 따라서 정답은 2가 됩니다.예제로 이해하기입력 − arr[] = { -1, 2, 5, -3, 8, 10 }출력 − 평균이 같은 배
문제 이해하기 이 문제에서는 start, end, number라는 세 개의 입력 변수가 주어집니다. 목표는 start부터 end까지 범위 내에 있는 자연수 쌍 중에서 최대공약수(GCD)가 number와 정확히 일치하는 쌍의 개수를 찾는 것입니다. 다시 말해, GCD(A, B) = number이면서 A와 B가 모두 [start, end] 범위에 속하는 경우를 세면 됩니다. 예제를 통해 자세히 살펴보겠습니다. 입력: start=5, end=20, number=8 출력: GCD가 주어진 숫자와 같은 자연수 쌍의 개수: 3 설명: 5부터
문제 개요 길이가 N인 배열이 주어지며, 배열에는 0과 1만 들어 있습니다. 값 1은 서쪽 방향으로 달리는 자동차를, 값 0은 동쪽 방향으로 달리는 자동차를 의미합니다. 두 자동차 A와 B가 0 ≤ A < B < N 조건을 만족하고, A가 동쪽으로(0) B가 서쪽으로(1) 진행한다면 이를 지나가는 자동차 쌍으로 세어 1씩 카운트합니다. 즉, 0의 인덱스가 1의 인덱스보다 앞선 (0, 1) 쌍의 개수를 구하는 문제입니다. 예시를 통해 살펴보겠습니다. 입력 − arr[] = {1, 0, 1, 0, 1} 출력 − 지나가는 자동
2차원 좌표평면 위의 두 점 (x1, y1)과 (x2, y2)가 주어졌을 때, 두 점 사이의 맨해튼 거리(Manhattan Distance)와 정확히 같은 거리를 갖는 모든 경로의 개수를 구하는 것이 목표입니다.맨해튼 거리란?두 점 (x1, y1)과 (x2, y2) 사이의 맨해튼 거리는 다음과 같이 정의됩니다.MD = |x1 − x2| + |y1 − y2|설명의 편의를 위해 A = |x1 − x2|, B = |y1 − y2|라고 하겠습니다.맨해튼 거리와 같은 거리를 갖는 모든 경로는 A개의 수평 이동과 B개의 수직 이동, 즉 총 (
문제 이해하기 영어 문장이 담긴 문자열이 하나 주어집니다. 목표는 이 문장에서 회문(palindrome)에 해당하는 단어가 몇 개인지 세는 것입니다. 회문 단어란 앞에서부터 읽어도 뒤에서부터 읽어도 글자 순서가 완전히 같은 단어를 의미합니다. 예를 들어 문장이 “Madam speaks good Malayalam”이라면 회문 단어는 2개입니다(Madam, Malayalam). 참고: 단어에는 대문자와 소문자가 섞여 있을 수 있으며, 대소문자는 구분하지 않고 비교합니다. 예시 입력 − str = “My Mom and Anna left
문제 소개1에서 시작하는 수열 생성기가 있다고 가정해 보겠습니다. 이 생성기는 각 단계가 진행될 때마다 0은 10으로, 1은 01로 변환합니다. 따라서 단계가 거듭될수록 수열은 다음과 같이 변화합니다.1단계 – 012단계 – 10013단계 – 01101001 …목표는 주어진 단계 수에서 연속된 두 개의 0(00)이 등장하는 쌍의 개수를 구하는 것입니다. 예를 들어 단계가 1일 때 0의 쌍은 0개, 단계가 2 또는 3일 때는 각각 1개입니다.4단계 – 10010110011010015단계 – 011010011001011010010110
문제 개요숫자로 이루어진 배열이 주어졌을 때, 인덱스와 배열 요소의 곱을 비교하여 아래 조건을 만족하는 쌍(pair)의 개수를 찾는 것이 목표입니다.만약 i * arr[i] > j * arr[j]라면, (arr[i], arr[j])는 유효한 쌍입니다.예를 들어 배열이 [5, 4, 3, 2, 1]이라면, 조건을 만족하는 쌍은 [3, 1]과 [2, 1] 두 개입니다.예제로 이해하기예제 1입력 − arr[] = [1, 5, 4, 1, 2, 8, 3]출력 − i*arr[i] > j*arr[j] 조건을 만족하는 쌍의 개수: 3설명
양의 정수로 이루어진 배열이 주어졌을 때, LCM(arr[i], arr[j]) > min(arr[i], arr[j]) 조건을 만족하는 원소 쌍의 개수를 구하는 것이 목표입니다. 즉, 한 쌍을 이루는 두 원소의 최소공배수(LCM)가 두 원소 중 작은 값보다 커야 한다는 의미입니다. 참고: 쌍 (arr[i], arr[j])과 (arr[j], arr[i])는 같은 쌍이므로 중복해서 세어서는 안 됩니다. 예제로 이해하기 예제 1 입력 − arr[] = [1, 5, 4, 2] 출력 − 조건을 만족하는 쌍의 개수: 6 설명 − 다음 6개
양의 정수로 이루어진 배열이 주어졌을 때, 배열 요소 중 최소 한 개가 소수에 해당하는 서로 다른 쌍(pair)의 개수를 구하는 것이 목표입니다. 예를 들어 배열이 [1, 2, 3, 4]라면 만들 수 있는 쌍은 (1,2), (1,3), (2,3), (2,4), (3,4) 입니다. 예제로 살펴보기 입력 − arr[] = { 1, 2, 4, 8, 10 } 출력 − 최소 한 개의 요소가 소수인 쌍의 개수: 4 설명 − 배열에서 유일한 소수는 2이며, 2와 나머지 모든 요소를 짝지으면 (1,2), (2,4), (2,8), (2,10)의
문제 개요 양수로만 구성된 두 개의 배열과 하나의 값 x가 주어집니다. 찾아야 하는 것은 첫 번째 배열에서 원소 A를, 두 번째 배열에서 원소 B를 선택하여 A + B = x를 만족하는 쌍 (A, B)의 개수입니다. 예제로 이해하기 입력 − arr_1[] = {1, 2, 5, 3, 4}, arr_2[] = {7, 0, 1, 3}, x = 6 출력 − 합이 x와 같은 쌍의 개수: 2 설명 − 조건을 만족하는 쌍은 (5, 1)과 (3, 3)입니다. 입력 − arr_1[] = {1, 1, 1}, arr_2[] = {2, 2}, x =
양의 정수로 이루어진 두 개의 배열과 값 K가 주어집니다. 목표는 첫 번째 배열의 요소 A와 두 번째 배열의 요소 B로 구성된 고유한 쌍 (A, B) 중에서 A % B = K 또는 B % A = K를 만족하는 쌍의 개수를 구하는 것입니다.예시로 이해하기입력 − arr_1[] = {1,2,5,3,4}; arr_2[] = {7,1,3}; k=2출력 − 모듈로 연산 결과가 K가 되는 두 배열의 쌍 개수: 2설명 − 해당 쌍은 (5,7), 즉 (arr_1[2], arr_2[1])로 7%5=2이며, (5,3), 즉 (arr_1[2], arr
두 개의 이진 탐색 트리(Binary Search Tree, BST)와 값 x가 입력으로 주어졌을 때, 각 트리에서 노드를 하나씩 선택하여 두 노드 값의 합이 x와 같아지는 쌍의 개수를 구하는 것이 목표입니다. 예를 들어 BST_1에서 노드 1을, BST_2에서 노드 2를 가져와 두 데이터 값을 더했을 때 그 합이 x라면 카운트를 1 증가시킵니다.구체적인 예시를 통해 살펴보겠습니다.입출력 예시입력 출력 − 합이 x와 같은 두 BST의 노드 쌍 개수: 1설명 − 해당하는 쌍은 (8, 6)입니다.입력&nb
양의 정수 N이 주어졌을 때, N을 0으로 만들기 위해 필요한 연산 횟수를 구하는 것이 이 문제의 목표입니다. 여기서 적용되는 연산은 N = N - P이며, P는 N의 가장 작은 소인수(최소 소인수)입니다.예제로 이해하기입력 − N = 17출력 − N을 0으로 줄이는 데 필요한 연산 횟수: 1설명 − 17의 최소 소인수는 17 자신입니다. 따라서 연산은 단 한 번만 적용됩니다. 즉, 17 - 17 = 0이 됩니다.입력 − N = 20출력 − N을 0으로 줄이는 데 필요한 연산 횟수: 10설명 − 20의 최소 소인수는 2입니다. 2를
문제 소개정수만으로 이루어진 배열 arr[]가 주어졌을 때, 고유한(중복되지 않는) 요소를 최대한 많이 포함하는 부분 수열의 개수를 구하는 것이 이 문제의 목표입니다.예를 들어 배열이 [4, 1, 2, 3, 4]라면, 고유 요소를 최대로 포함하는 부분 수열은 [4, 1, 2, 3]과 [1, 2, 3, 4], 두 가지입니다.예제로 이해하기입력 − arr[] = { 1, 3, 5, 4, 2, 3, 1 }출력 − 최대 고유 요소를 가지는 부분 수열의 개수: 4설명 − 고유한 요소는 1, 2, 3, 4, 5로 총 5개입니다. 해당하는 부분