이 문제에서는 2차원 평면 위의 한 점 P와 직선 방정식 ax + by + c = 0의 계수 a, b, c가 주어집니다. 우리가 해야 할 일은 이 직선을 거울 삼아 점 P의 대칭점, 즉 거울상(mirror image)을 구하는 것입니다.문제 이해를 돕는 예시입력P = (2, 1), a = 1, b = -1, c = 0출력(1, 2)설명주어진 계수로 만들어지는 직선은 x − y = 0, 즉 y = x입니다. 점 (2, 1)을 이 직선을 기준으로 반사하면 대칭 위치에 있는 (1, 2)를 얻게 됩니다.풀이 접근 방식핵심은 거울상이 될 점
문제 소개 이 문제에서는 하나의 이진 트리(binary tree)가 주어지며, 우리의 과제는 트리 안에서 주어진 노드의 미러(mirror) 노드를 찾는 것입니다. 즉, 특정 노드가 주어졌을 때 반대편 서브트리에서 대칭되는 위치에 있는 노드를 찾아야 합니다. 예시를 통해 문제를 이해해 보겠습니다. 입력 출력 B의 미러는 E입니다. 해결 접근 방식 이 문제를 해결하는 가장 간단한 방법은 루트에서부터 재귀적으로 탐색하면서, 왼쪽 서브트리와 오른쪽 서브트리를 각각 가리키는 두 개의 포인터를 함께 사용하는 것입니다. 탐색 도중 목표 값의
이 문제에서는 크기가 n인 배열 arr[]와 시작(start) 및 끝(end) 요소로 정의된 범위가 주어집니다. 우리의 목표는 주어진 범위 중 배열에 존재하지 않는 요소(누락된 요소)를 찾아 출력하는 것입니다.문제 설명범위 [start, end]에 속한 모든 숫자를 확인하고, 그중 배열에 포함되어 있지 않은 요소들을 찾아내는 것이 핵심입니다.예제로 이해하기입력arr[] = {4, 6, 3, 7}, start = 3, end = 8출력5, 8설명전체 범위: [3, 4, 5, 6, 7, 8]배열 요소: {4, 6, 3, 7}범위에는 있
이 문제에서는 단일 연결 리스트(singly linked list) LL과 정수 k가 주어지며, 우리의 목표는 연결 리스트에서 모듈러 노드(modular node)를 찾는 것입니다.문제 설명모듈러 노드란 노드의 인덱스가 k로 나누어 떨어지는(즉, i % k == 0) 노드를 의미합니다. 이때 우리가 찾아야 하는 것은 해당 조건을 만족하는 노드 중 마지막(가장 뒤에 있는) 노드입니다.예제로 문제 이해하기입력ll = 3 -> 1 -> 9 -> 6 -> 8 -> 2, k = 4출력6설명연결 리스트의 각 노드는
이 문제에서는 하나의 자연수 N이 주어지며, 우리의 과제는 N보다 작거나 같은 수 중에서 2, 3 또는 5의 배수를 찾는 것입니다. 문제 설명 핵심은 1부터 N까지의 모든 수 중에서 2, 3 또는 5로 나누어 떨어지는 수의 개수를 구하는 것입니다. 예시를 통해 문제를 살펴보겠습니다. 입력 N = 7 출력 5 설명 1부터 7까지의 수 : 1, 2, 3, 4, 5, 6, 7 2, 3, 5로 나누어 떨어지는 수 : 2, 3, 4, 5, 6 (총 5개) 접근 방법 1: 단순 순회 가장 직관적인 해결 방법은 1부터 N까지 모든 수
이 문제에서는 매우 큰 정수를 나타내는 문자열 num이 주어지며, 우리의 과제는 이 큰 수 N에 대해 4로 나눈 나머지(N % 4)를 구하는 것입니다.문제 설명주어진 숫자를 4로 나누었을 때의 나머지를 계산하는 것이 목표입니다.예제로 문제 이해하기입력num = 453425245출력1해결 접근 방법이 문제를 해결하는 간단한 방법은 다음과 같은 수학적 성질을 활용하는 것입니다. 어떤 수를 4로 나눈 나머지는 그 수의 마지막 두 자리 숫자만으로 구할 수 있습니다.그 이유는 100이 4로 나누어떨어지기 때문입니다. 즉, 100으로 나눈 몫
이 문제에서는 세 값 A, B, N이 주어집니다. 우리의 과제는 주어진 방정식들을 만족하는 N개의 양의 정수를 찾는 것입니다.문제 설명아래 두 방정식을 동시에 만족하는 N개의 양의 정수를 찾아야 합니다.x12 + x22 + … + xn2 ≥ Ax1 + x2 + … + xn ≤ B조건을 만족하는 값이 존재하면 해당 N개의 값을 출력하고, 그렇지 않으면 -1을 출력합니다.입력 예시N = 4, A = 65, B = 16출력 예시1 1 1 8설명위 출력이 방정식을 만족하는지 확인해 보면 다음과 같습니다.12 + 12 + 12 + 82 =
문제 개요이 문제에서는 정수 N이 주어지며, 숫자 4와 7로만 구성된 수열을 다룹니다.수열은 다음과 같은 규칙으로 진행됩니다: 4, 7, 44, 47, 74, 77, …즉, 두 자릿수(4와 7)만 허용되는 이 수열에서 n번째 원소를 찾는 것이 과제입니다.예제로 문제 이해하기입력N = 4출력47설명수열: 4, 7, 44, 47, …N이 4이므로 수열의 네 번째 값인 47이 결과가 됩니다.해결 접근 방법가장 간단한 해결 방법은 N번째 항까지 수열을 직접 만들어 가는 것입니다. 이 수열에는 규칙성이 있어, 현재 수의 마지막 자릿수가 7이
이 문제에서는 하나의 이진 트리(Binary Tree)와 정수 N이 주어지며, 트리를 후위 순회(Postorder Traversal)했을 때 N번째로 방문하게 되는 노드를 찾아 출력하는 것이 목표입니다.이진 트리는 각 노드가 최대 두 개의 자식 노드만 가질 수 있다는 특수한 조건을 만족하는 트리 구조입니다.순회(Traversal)란 트리에 속한 모든 노드를 체계적으로 방문하는 과정을 의미하며, 필요에 따라 방문한 노드의 값을 출력하기도 합니다.예제로 문제 이해하기입력N = 6출력3설명위 트리의 후위 순회 결과는 다음과 같습니다.4
이 문제에서는 이진 트리(binary tree)와 정수 N이 주어지며, 전위 순회(Preorder Traversal) 과정에서 N번째로 방문하는 노드를 찾아 출력하는 것이 목표입니다.이진 트리는 각 노드가 최대 두 개의 자식 노드만 가질 수 있다는 특수한 조건을 가진 트리 구조입니다.순회(Traversal)란 트리의 모든 노드를 체계적으로 방문하는 과정을 의미하며, 필요에 따라 각 노드의 값을 출력하기도 합니다. 전위 순회는 루트 → 왼쪽 서브트리 → 오른쪽 서브트리 순서로 노드를 방문하는 방식입니다.문제 이해를 위한 예시입력N =
이 문제에서는 하나의 이진 트리(Binary Tree)와 정수 N이 주어지며, 이진 트리를 중위 순회(Inorder Traversal)했을 때 N번째에 방문하게 되는 노드를 찾아야 합니다.이진 트리는 각 노드가 최대 두 개의 자식 노드만 가질 수 있다는 특수한 조건을 갖는 트리 구조입니다. 또한 순회(Traversal)란 트리의 모든 노드를 한 번씩 방문하는 과정을 의미하며, 필요에 따라 방문한 노드의 값을 출력하기도 합니다.문제 예시예제를 통해 문제를 더 쉽게 이해해 보겠습니다.입력N = 6출력3설명트리의 중위 순회 결과 : 4,
문제 개요 이 문제에서는 정수 N이 하나 주어지며, 수열 1 2 2 3 3 3 4…에서 n번째 항을 찾는 것이 목표입니다. 이 수열은 숫자 1이 한 번, 2가 두 번, 3이 세 번씩 반복되어 나타나는 특징적인 패턴을 가집니다. 예제로 문제 이해하기 입력: N = 6 출력: 3 설명: n번째 항까지의 수열은 1, 2, 2, 3, 3, 3, ... 입니다. 여섯 번째 항은 3입니다. 해결 접근 방법 방법 1: 중첩 루프 사용 가장 직관적인 방법은 중첩 루프를 사용하는 것입니다. 바깥쪽 for 루프는 1부터 n까지 반복하고, 안쪽 루프는
이 문제에서는 정수 N이 주어지며, 수열 7, 15, 32, ...의 n번째 항을 구하는 것이 목표입니다.문제 이해를 위한 예시입력N = 6출력281설명n번째 항까지의 수열은 다음과 같습니다.7, 15, 32, 67, 138, 281해결 접근 방법이 문제의 해결 열쇠는 수열의 규칙을 파악하는 데 있습니다. 이 수열은 단순한 등차·등비 수열이 아닌 복합적인 패턴을 가지고 있습니다.인접한 항들 사이의 차를 구해 보면,T(2) - T(1) = 15 - 7 = 8 T(3) - T(2) = 32 - 15 = 17여기서 각 항이 이전 항과 어
이 문제에서는 정수 N이 주어지며, 수열 9, 33, 73, 129…의 n번째 항을 찾아야 합니다. 예시를 통해 문제를 이해해 보겠습니다. 입력 N = 4 출력 129 설명 n번째 항까지의 수열은 9, 33, 73, 129…입니다. 즉, N = 4일 때 네 번째 항인 129가 결과가 됩니다. 해결 접근 방법 이 문제의 해결 열쇠는 수열의 일반항을 찾는 것입니다. 수학적으로 일반항을 유도한 뒤, 그 식을 프로그램에 그대로 적용하면 됩니다. 먼저 원래 수열과 한 항씩 밀어낸 수열을 나란히 써서 서로 빼 보겠습니다. Sum = 9 +
이 문제에서는 정수 N이 주어지며, 수열 1, 4, 27, 16, 125, 36, 343...에서 n번째 항을 찾아야 합니다.문제 이해를 위한 예시입력N = 7출력343설명주어진 수열은 1, 4, 27, 16, 125, 36, 343...과 같이 진행됩니다. 7번째 항은 343입니다.해결 접근 방법이 문제의 가장 간단한 해결 방법은 수열의 일반항을 찾는 것입니다. 이 수열은 두 개의 서로 다른 규칙이 번갈아 나타나는 구조입니다. 즉, 홀수 번째 항과 짝수 번째 항이 각각 다른 패턴을 따릅니다.짝수 번째 항: 해당 인덱스의 제곱 값입
이 문제에서는 정수 N이 주어지며, 수열 1, 3, 6, 10, 15, 21, 28...에서 n번째 항을 찾아야 합니다.예제로 문제 이해하기입력N = 7출력28설명수열은 1, 3, 6, 10, 15, 21, 28... 로 진행됩니다. 7번째 항은 28입니다.해결 접근 방법가장 간단한 방법은 수열의 일반항을 찾는 것입니다. 수열을 관찰해 보면 i번째 수는 (i-1)번째 항에 i를 더한 값이라는 규칙을 발견할 수 있습니다.1번째 항: 12번째 항: 1 + 2 = 33번째 항: 3 + 3 = 64번째 항: 6 + 4 = 10이처럼 1부터
이 문제에서는 정수 N이 주어지며, 목표는 수열 2, 10, 30, 68, 130, ...의 n번째 항을 구하는 것입니다.문제 예시예시를 통해 문제를 쉽게 이해해 보겠습니다.입력N = 7출력350설명수열: 2, 10, 30, 68, 130, 222, 350, ...해결 접근 방식가장 간단한 해결 방법은 수열의 일반항, 즉 n번째 항에 대한 공식을 찾는 것입니다. 각 항을 해당 인덱스와 비교해 보면 다음과 같은 규칙성을 발견할 수 있습니다.i = 1 → T(1) = 2 = 1 + 1 = 1³ + 1i = 2 → T(2) = 10
문제 개요이 문제에서는 정수 N이 하나 주어지며, 수열 3, 9, 21, 41, 71...의 n번째 항을 구하는 것이 목표입니다.예시를 통해 문제를 살펴보겠습니다.입력N = 7출력169설명수열: 3, 9, 21, 41, 71, 113, 169...해결 접근 방법이 문제를 해결하는 가장 효율적인 방법은 수열의 일반항을 찾는 것입니다. 먼저 인접한 항들 사이의 차이를 관찰해 보겠습니다.9 − 3 = 621 − 9 = 1241 − 21 = 2071 − 41 = 30차이 값이 6, 12, 20, 30처럼 규칙적으로 증가하는 것으로 보아 이
이 문제에서는 n개의 변수가 있고, 각 항이 자기 자신을 제외한 나머지 (n−1)개 변수의 합으로 구성된 배열 sum[]이 주어집니다. Sum[1] = x2 + x3 + x4 + … + xn Sum[2] = x1 + x3 + x4 + … + xn . . Sum[i] = x1 + … + x(i−1) + x(i+1) + … + xn . . Sum[n] = x1 + x2 + x3 + … + x(n−1) 우리가 해야 할 일은 이 합 배열만 가지고 x1, x2, …, xn의 실제 값을 역으로 계산하는 것입니다. 예시로 문제 이해하기 입력
문제 개요이 문제에서는 크기가 m인 두 개의 배열 arr1[]과 arr2[], 그리고 하나의 값 N이 주어집니다. 우리의 과제는 두 배열의 합으로 구성된 집합에서 N번째 원소를 찾는 것입니다.문제 설명 — 여기서 우리는 arr1의 원소 하나와 arr2의 원소 하나를 더한 값들로 집합을 만듭니다. 즉, sum = arr1[i] + arr2[j] (단, i, j < m) 형태의 모든 합을 모은 집합입니다. N이 주어지면 이 집합에서 N번째 원소의 값을 구해야 합니다.예제로 문제 이해하기입력arr1[] = {3, 1, 5}, arr