이 문제에서는 지금까지 진행된 총 강의 수 M과 학생이 출석한 강의 수 N이 주어집니다. 목표는 출석률을 75% 이상으로 유지하기 위해 앞으로 추가로 출석해야 하는 최소 강의 수를 구하는 프로그램을 C++로 작성하는 것입니다. 문제 설명 대학생들에게 출석률 75% 유지는 가장 큰 고민 중 하나입니다. 많은 대학에서 출석률이 일정 기준에 미달하면 시험 응시 자격을 잃거나 과목 이수가 어려워질 수 있기 때문입니다. 이 프로그램은 현재까지의 출석 현황을 바탕으로, 학생이 정기적으로 출석해야 할 최소 강의 수를 계산해 줍니다. 예시를 통
문제 개요 이 문제에서는 하나의 숫자 N이 주어지며, 우리의 과제는 C++로 수열 a, b, b, c, c, c…의 N번째 항을 찾는 프로그램을 작성하는 것입니다. 문제 설명 다음 수열의 N번째 항을 구해야 합니다. a, b, b, c, c, c, d, d, d, d, …(총 N개의 항) 즉, 주어진 수열의 일반항을 찾아내야 합니다. 입력 예시 N = 7 출력 예시 d 해결 접근 방법 수열의 일반항을 찾으려면 먼저 수열의 패턴을 자세히 관찰해야 합니다. 이 수열은 a가 1개, b가 2개, c가 3개, d가
이 문제에서는 하나의 숫자 N이 주어지며, C++로 주어진 급수의 N번째 항을 구하는 프로그램을 작성하는 것이 목표입니다.문제 설명다음과 같은 급수가 주어졌을 때 −1, 1, 2, 3, 4, 9, 8, 27, 16, 81, 32, 243, 64, 729, 128, 2187, 256, ... N개의 항우리는 이 급수의 일반항을 찾아내야 합니다.예제를 통해 문제를 이해해 보겠습니다.예제 1입력N = 6출력9예제 2입력N = 13출력64풀이 접근법이 문제를 해결하려면 급수를 주의 깊게 관찰해야 합니다. 이 급수는 혼합(mixt
이 문제에서는 세 개의 숫자 A, B, N이 주어지며, C++을 이용해 A 또는 B로 나누어 떨어지는 수열의 N번째 항을 구하는 프로그램을 작성해야 합니다.문제 설명A 또는 B로 나누어 떨어지는 수들을 차례대로 나열했을 때, 그중 N번째에 해당하는 값을 찾는 것이 목표입니다. 즉, A나 B로 나누어 떨어지는 수를 1번째부터 순서대로 세어 나가다가 정확히 N번째가 되는 수를 출력하면 됩니다.예제로 이해하기입력A = 4, B = 3, N = 5출력9설명3 또는 4로 나누어 떨어지는 수들을 순서대로 나열하면 다음과 같습니다.3, 4, 6
이 문제에서는 하나의 숫자 N이 주어지며, 우리의 과제는 C++를 사용하여 다음 수열의 N번째 항을 찾는 프로그램을 작성하는 것입니다.0, 0, 2, 1, 4, 2, 6, 3, 8 …문제 설명주어진 수열에서 N번째 항을 찾아야 합니다.0, 0, 2, 1, 4, 2, 6, 3, 8 .... N개의 항이를 위해서는 수열의 일반항(일반식)을 먼저 찾아야 합니다.입력 예시N = 8출력 예시3해결 접근 방법수열의 일반항을 찾으려면 수열을 자세히 관찰해야 합니다. 이 수열은 두 개의 수열이 섞여 있어 한눈에 패턴을 파악하기가 다소 어렵습니다.
이 문제에서는 숫자 N이 주어지며, C++로 수열 0, 2, 1, 3, 1, 5, 2, 7, 3…의 N번째 항을 구하는 프로그램을 작성하는 것이 목표입니다.문제 설명주어진 수열은 다음과 같습니다.0, 2, 1, 3, 1, 5, 2, 7, 3 … N번째 항이 수열의 N번째 항을 구하려면 먼저 수열의 일반항 규칙을 파악한 뒤, 그 규칙에 따라 N번째 값을 계산해야 합니다.예시로 이해하기입력: N = 7출력: 2접근 방법일반항 공식을 찾으려면 수열을 면밀히 관찰해야 합니다. 겉보기에는 규칙이 없어 보이지만, 사실 이 수열은 서로 다른 두
이 튜토리얼에서는 수열 0, 7, 8, 33, 51, 75, 102, 133...에서 N번째 항을 찾는 프로그램을 C++로 작성하는 방법을 살펴보겠습니다.프로그램의 목표는 하나의 숫자 N을 입력받아, 그 위치에 해당하는 수열의 항 값을 계산하여 출력하는 것입니다.수열의 규칙 이해하기주어진 수열의 각 항은 아래와 같은 일반항 공식으로 표현할 수 있습니다.N번째 항 = 2 × N² + N − 3이 공식을 활용하면 반복문 없이도 원하는 위치의 항을 O(1)의 시간 복잡도로 즉시 계산할 수 있어 매우 효율적입니다.예제 코드#include
이 튜토리얼에서는 수열 0, 10, 30, 60, 100, 150, 210, 280...의 N번째 항을 구하는 C++ 프로그램을 다룹니다. 하나의 숫자 N이 주어졌을 때, 우리가 해야 할 일은 해당 위치에 있는 수열의 값을 계산하는 것입니다. 수열의 일반항 유도 이 수열을 자세히 살펴보면 인접한 항 사이의 차이가 10, 20, 30, 40, 50...처럼 10씩 일정하게 증가하는 패턴을 보입니다. 이는 실제로 삼각수(1, 3, 6, 10, 15, 21, 28...)에 10을 곱한 형태이며, 이를 바탕으로 N번째 항의 일반 공식을 다
이 문제에서는 하나의 숫자 N이 주어지며, 목표는 C++을 사용해 수열 0, 9, 22, 39, 60, 85, 114, 147, …의 N번째 항을 구하는 프로그램을 작성하는 것입니다.문제 설명주어진 수열은 다음과 같습니다.0, 9, 22, 39, 60, 85, 114, 147, … (총 N개의 항)이 수열의 N번째 항을 구하려면 먼저 수열의 일반항을 나타내는 공식을 유도한 뒤, 그 식에 N 값을 대입하여 계산하면 됩니다.예시로 이해하기입력: N = 6출력: 85해결 접근 방법수열의 일반항을 찾기 위해 각 항의 증가 패턴을 관찰해 보
이 튜토리얼에서는 수열 1, 6, 17, 34, 56, 86, 121, 162, …의 N번째 항을 구하는 프로그램을 다뤄보겠습니다.사용자로부터 하나의 숫자 N을 입력받으면, 우리가 해야 할 작업은 해당 위치에 있는 수열의 항 값을 계산하여 출력하는 것입니다.수열의 일반항 공식이 수열을 자세히 살펴보면 각 항이 3n² − 4n + 2라는 공식으로 표현될 수 있음을 알 수 있습니다. 실제로 몇 가지 값을 대입해 확인해 보겠습니다.n = 1 → 3(1)² − 4(1) + 2 = 1n = 2 → 3(2)² − 4(2) + 2 = 6n =
이 문제에서는 하나의 숫자 N이 주어지며, 우리의 목표는 C++를 사용하여 수열 1, 3, 12, 60, 360...의 N번째 항을 구하는 프로그램을 작성하는 것입니다.문제 이해하기주어진 수열은 다음과 같습니다.1, 3, 12, 60, 360, 2520 ... N번째 항까지입력 및 출력 예시입력: N = 6출력: 2520해결 접근 방법이 수열의 일반항 공식은 언뜻 보기에 쉽게 떠오르지 않습니다. 수열의 값이 기하급수적으로 커지기 때문에 팩토리얼(Factorial)이나 지수 형태일 가능성이 높습니다.먼저 팩토리얼을 가정하고 수열을 관
문제 개요이 문제에서는 하나의 숫자 N이 주어지며, C++로 수열 0, 11, 28, 51, 80, 115, 156, 203, …의 N번째 항을 구하는 프로그램을 작성하는 것이 목표입니다.문제 설명주어진 수열의 N번째 항을 계산하여 출력해야 합니다.예제로 이해하기입력: N = 5출력: 80설명: 수열의 다섯 번째 항은 80입니다.해결 접근 방법수열에서 인접한 항들 사이의 차이를 살펴보면 11, 17, 23, 29, 35, …로 일정하게 6씩 증가합니다. 두 번째 차분이 일정하다는 것은 이 수열이 이차식(2차 다항식)으로 표현될 수
이 문제에서는 하나의 숫자 N이 주어지며, 우리의 목표는 수열 2, 12, 28, 50, 77, 112, 152, 198, ...의 N번째 항을 구하는 C++ 프로그램을 작성하는 것입니다.문제 설명주어진 수열은 다음과 같습니다.2, 12, 28, 50, 77, 112, 152, 198, ... (N개의 항)먼저 이 수열의 일반항(일반 공식)을 찾아야 합니다.예제를 통한 이해입력: N = 6출력: 112해결 접근 방법수열의 값을 자세히 살펴보면 인접한 항 사이의 차이가 규칙적으로 증가하는 포물선(parabolic) 형태를 띠고 있습니
복소수를 나타내는 두 개의 문자열이 주어졌을 때, 이를 파싱하여 복소수 곱셈을 수행한 뒤 그 결과를 문자열 형태로 반환하는 문제를 생각해 봅시다.예를 들어 입력이 1+-1i와 1+-1i라면, 결과는 0+-2i가 됩니다.문제 해결 접근 방법복소수 곱셈은 다음과 같은 수학적 공식에 기반합니다.(a + bi) × (c + di) = (ac − bd) + (ad + bc)i즉, 실수부와 허수부를 분리한 후 위 공식을 적용하면 됩니다. 이를 단계별로 정리하면 다음과 같습니다.aa := 첫 번째 복소수의 실수부와 허수부로 이루어진 쌍(pair
문제 소개시:분 형식으로 표현된 24시간제 시간 지점들의 목록이 주어졌을 때, 목록에 있는 임의의 두 시간 지점 사이의 최소 분(minute) 차이를 구하는 문제입니다. 예를 들어 입력이 [12:30, 15:17]이라면 두 시점 사이의 차이는 167분이므로 결과는 167이 됩니다.해결 접근 방법하루는 총 24 × 60 = 1440분이므로, 모든 시간을 분 단위로 변환한 뒤 불리언 배열에 표시하고 순차적으로 탐색하면 효율적으로 해결할 수 있습니다. 구체적인 단계는 다음과 같습니다.크기가 24 × 60 + 1인 불리언 배열 ok를 정의
문제 개요양의 정수로 이루어진 배열이 주어졌다고 가정해 보겠습니다. 배열에서 인접한 숫자들은 차례대로 실수(float) 나눗셈을 수행합니다. 예를 들어 [2,3,4]는 2 / 3 / 4로 계산됩니다.여기에 우리는 원하는 위치에 원하는 만큼 괄호를 추가하여 연산 우선순위를 바꿀 수 있습니다. 목표는 결과값이 최대가 되도록 괄호를 배치하는 것이며, 그에 해당하는 수식을 문자열 형태로 반환해야 합니다. 단, 결과 수식에는 불필요한(중복된) 괄호가 포함되어서는 안 됩니다.예를 들어 입력이 [1000,100,10,2]라면 정답은 1000/(
문제 개요 32비트 양의 정수 n이 주어졌을 때, n에 포함된 자릿수들을 그대로 사용하면서 n보다 값이 큰 수 중에서 가장 작은 32비트 정수를 찾아야 합니다. 만약 조건을 만족하는 수가 존재하지 않는다면 -1을 반환합니다. 예를 들어 입력이 213이라면, 같은 자릿수(2, 1, 3)로 만들 수 있는 수 중 213보다 큰 가장 작은 수는 231이므로 결과는 231이 됩니다. 해결 전략 이 문제는 잘 알려진 다음 순열(Next Permutation) 알고리즘을 응용하면 효율적으로 해결할 수 있습니다. 단계별 접근 방법은 다음과 같
문제 설명길이가 N이고 인덱스가 0부터 시작하는 배열 A가 있다고 가정해 보겠습니다. 이 배열은 0부터 N-1까지의 모든 정수를 정확히 한 번씩 포함합니다. 우리가 구해야 하는 것은 다음 규칙을 따르는 집합 S의 최대 길이입니다.S[i] = {A[i], A[A[i]], A[A[A[i]]], ...}집합 S는 인덱스 i에서 시작하여 첫 원소로 A[i]를 선택하고, 그다음에는 A[A[i]], 그 뒤에는 A[A[A[i]]]를 차례로 추가합니다. 이 과정을 계속 반복하다가 S 안에 중복된 값이 나타나기 직전에 추가를 멈춥니다.예시배열이 A
문제 설명음수가 아닌 정수들로 이루어진 배열이 주어졌을 때, 배열에서 세 개의 값을 골라 삼각형의 세 변의 길이로 사용할 수 있는 조합(트리플렛)의 개수를 구하는 것이 목표입니다.예를 들어 입력이 [2, 2, 3, 4]라면 결과는 3이 됩니다. 첫 번째 2를 사용한 [2, 3, 4], 두 번째 2를 사용한 [2, 3, 4], 그리고 [2, 2, 3]으로 각각 삼각형을 만들 수 있기 때문입니다.접근 방법삼각형이 성립하려면 가장 긴 변의 길이가 나머지 두 변의 합보다 작아야 한다는 삼각 부등식이 반드시 만족되어야 합니다. 이 성질을 활
문제 개요텍스트 편집기에 문자 A가 딱 하나만 있다고 가정해 보겠습니다. 우리는 매 단계마다 다음 두 가지 연산 중 하나를 수행할 수 있습니다.모두 복사(Copy All) – 화면에 있는 모든 문자를 클립보드에 복사합니다.붙여넣기(Paste) – 마지막으로 복사한 내용을 화면에 붙여넣습니다.숫자 n이 주어졌을 때, 최소한의 연산 횟수로 화면에 정확히 n개의 A를 만들어야 합니다. 즉, n개의 A를 얻기 위해 필요한 최소 단계 수를 구하는 것이 이 문제의 목표입니다.예시n이 3이라면 답은 3입니다. 처음에는 A가 하나뿐이므로 먼저 복