문제 개요 단일 연결 리스트(singly linked list)가 주어졌을 때, 노드에 저장된 값이 소수(prime)인 모든 노드를 찾아 그 곱을 계산해 출력하는 것이 이번 글의 목표입니다. 예를 들어 리스트가 10 → 2 → 7 → 6 → 85로 구성되어 있다면, 소수에 해당하는 값은 2와 7뿐이므로 최종 결과는 2 × 7 = 14가 됩니다. 입력 · 출력 예시 입력: 10 2 7 6 85 출력: 14 설명: 리스트를 처음부터 끝까지 순회하면서 각 노드의 데이터가 소수인지 검사합니다. 10은 소수가 아니므로 건너뛰고, 2와 7은
문제 소개두 개의 이진수 문자열이 주어졌을 때, 두 문자열을 더한 결과를 구하고 그 결과를 이진수 문자열 형태로 반환하는 것이 이번 문제의 목표입니다.이진수(binary number)란 0과 1 두 숫자만으로 표현되는 수를 말합니다. 두 개의 이진수를 더할 때는 십진수 덧셈과 달리 아래와 같은 이진수 덧셈 규칙을 반드시 고려해야 합니다.0 + 0 → 00 + 1 → 11 + 0 → 11 + 1 → 0, 자리올림(carry) 1 발생입력 및 출력 예시입력 1str1 = {11}, str2 = {1}출력 1100입력 2str1 = {1
N개의 정수로 이루어진 배열 arr[N]이 주어졌을 때, 그 배열의 평균값을 구하는 것이 과제입니다. 평균을 구하는 방법은 크게 반복(iterative) 방식과 재귀(recursive) 방식 두 가지가 있으며, 이 글에서는 두 방법을 모두 예제 코드와 함께 자세히 설명합니다. 배열의 평균은 다음과 같이 정의할 수 있습니다. 배열의 평균 = 배열의 모든 요소의 합 ÷ 요소의 총개수 방법 1. 반복문(Iterative)을 이용한 평균 계산 반복 방식은 조건이 참(true)인 동안 명령문을 계속 실행하는 for 루프, while 루프,
N개의 정수로 이루어진 배열 arr[N]이 주어졌을 때, 이 배열이 비토닉(bitonic) 배열인지 판별하는 것이 이번 글의 목표입니다. 배열이 비토닉이라면 Yes its a bitonic array를 출력하고, 그렇지 않다면 No its not a bitonic array를 출력하면 됩니다.비토닉 배열이란?비토닉 배열은 배열의 요소가 먼저 엄격하게 증가하다가, 특정 지점(정점)을 기준으로 엄격하게 감소하는 형태를 가진 배열을 말합니다.예를 들어 arr[] = {1, 2, 3, 4, 2, -1, -5}는 비토닉 배열입니다. 값이 4
하나의 수 n이 주어졌을 때, 해당 양의 정수가 프로스 수인지 아닌지를 판별하고 그 결과를 출력하는 것이 이번 글의 목표입니다. 프로스 수란 무엇인가? 프로스 수는 다음과 같은 형태로 정의되는 수입니다. N = k · 2n + 1 여기서 n은 양의 정수, k는 홀수인 양의 정수입니다. 처음 몇 개의 프로스 수는 다음과 같습니다. 3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97....... 입력 예시 number: 17 출력 프로스 수입니다 입력 예시 number: 18 출력 프로스 수가
이 글에서는 주어진 양의 정수 n이 버즈 넘버(Buzz Number)인지 아닌지를 판별하고, 그 결과를 출력하는 C++ 프로그램을 다룹니다.버즈 넘버(Buzz Number)란?어떤 수가 버즈 넘버가 되려면 아래 두 조건 중 하나라도 참이어야 합니다.숫자가 7로 끝나야 합니다. 예: 27, 657 등숫자가 7로 나누어 떨어져야 합니다. 예: 63, 49 등입력 및 출력 예시입력number: 49출력its a buzz number설명 − 49는 7로 나누어 떨어지므로 버즈 넘버입니다.입력number: 29출력its not a
문제 개요서로 다른 좌표 값을 가진 세 개의 점이 주어졌을 때, 이 점들이 공선(collinear)인지 아닌지 판별해야 합니다.세 점이 모두 같은 직선 위에 있으면 공선점이라고 부르고, 각기 다른 직선 위에 있다면 공선점이 아니라고 합니다. 아래 그림은 공선점과 비공선점의 예를 보여줍니다.입력x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5출력no points are not collinear입력x1 = 1, y1 = 1, x2 = 1, y2 = 4, x3 = 1, y3 = 5출력points are
n개의 정수로 이루어진 배열 arr[n]이 주어졌을 때, 해당 배열이 팰린드롬(palindrome)인지 판별하는 것이 이번 글의 목표입니다. 이 작업은 C++의 STL(Standard Template Library, 표준 템플릿 라이브러리)을 활용하여 수행합니다.팰린드롬이란?C++에는 STL이라는 강력한 기능이 내장되어 있습니다. STL은 스택(stack), 큐(queue), 리스트(list) 등 다양한 자료구조와 여러 유용한 함수를 제공하는 C++ 템플릿 클래스의 집합입니다. STL을 제대로 활용하려면 템플릿 클래스에 대한 기본적
원기둥 모양 물탱크의 반지름과 높이, 탱크에 담그려는 n개의 구형 고체 공의 반지름, 그리고 탱크에 현재 담겨 있는 물의 부피가 주어졌을 때, 공들을 물탱크에 담그면 탱크가 넘치는지 아닌지를 확인하는 것이 이 글의 목표입니다.부피 계산 공식원기둥(물탱크)3.14 * r * r * h여기서 r은 탱크의 반지름, h는 탱크의 높이입니다.구(공)(4/3) * 3.14 * R * R * R여기서 R은 구형 공의 반지름입니다.입력 및 출력 예시입력tank_height = 5 tank_radius = 2 water_volume = 10 cap
가중 평균이란?자연수로 이루어진 배열 하나와, 각 자연수에 대응하는 가중치를 담고 있는 또 다른 배열이 주어졌을 때, 자연수들의 가중 평균(weighted mean)을 계산하는 것이 이번 글의 목표입니다. 가중 평균은 단순 평균과 달리 각 값의 중요도(가중치)를 반영하여 전체 평균을 구하는 방식으로, 통계 및 데이터 분석에서 널리 활용됩니다.자연수의 가중 평균은 다음 공식을 사용하여 계산할 수 있습니다.$$\overline{x}=\frac{\displaystyle\sum\limits_{i=1}^n (x_{i*}w_{i})}{\dis
세 명의 플레이어 A, B, C가 주사위를 던진다고 가정해 봅시다. 이때 C가 주사위를 던져 나온 숫자가 A와 B의 숫자보다 모두 클 확률을 구하는 것이 목표입니다.더 높은 값이 나올 확률을 확인하려면, 세 번째 주사위의 값이 앞의 두 값보다 커야 한다는 점을 항상 염두에 두어야 합니다.예를 들어 A가 주사위를 던져 2가 나오고, B가 던져 3이 나왔다면, C가 더 높은 값을 얻을 확률은 3/6 = 1/2입니다. 왜냐하면 A와 B보다 큰 값은 4, 5, 6뿐이기 때문입니다. 이를 기약분수로 약분하면 확률은 1/2가 됩니다.따라서 최
문제 소개 0과 1로만 이루어진 배열이 하나 주어집니다. 이때 0은 비가 오지 않은 날, 1은 비가 온 날을 나타냅니다. 우리가 해야 할 일은 이 강수 기록을 바탕으로 N+1일째에 비가 올 확률을 계산하는 것입니다. N+1일째 비가 올 확률은 아래 공식으로 간단하게 구할 수 있습니다. 비가 올 확률 = 배열 속 비가 온 날(1)의 총 개수 ÷ 전체 일수 즉, 지금까지의 기록에서 비가 온 날이 차지하는 비율을 그대로 다음 날의 강수 확률로 보는 빈도 기반(frequency-based) 접근 방식입니다. 예제 1 입력 arr[] = {
문제 개요사람 A가 시작 위치 X = 0에서 출발하여 걷습니다. 이때 한 번에 2칸 또는 3칸만 이동할 수 있으며, 정확히 X = num 지점에 도달할 확률을 구하는 것이 이 글의 목표입니다. 2칸 이동할 확률은 P, 3칸 이동할 확률은 1 - P입니다.입력 예시 1num = 5, p = 0.2출력:0.32설명:num = 5에 도달할 수 있는 방법은 두 가지입니다. 2+3 순서로 도달할 확률: 0.2 × 0.8 = 0.16 3+2 순서로 도달할 확률: 0.8 × 0.2 = 0.16 따라서 총 확률은 0.16 + 0.16 = 0.32
문제 이해 임의의 길이를 가진 막대기 하나가 주어지고, 이 막대기를 무작위로 n개의 조각으로 자릅니다. 조각의 길이는 정수일 수도 있고 실수일 수도 있습니다. 이때 잘려 나온 조각들을 이어 붙여 n변 다각형을 만들 수 있는지, 그리고 그 확률이 얼마인지 구하는 것이 이 글의 목표입니다. 확률 계산 공식 n개의 조각으로 n변 다각형을 형성할 확률은 다음 공식으로 간단하게 계산할 수 있습니다. $$P(E^{\prime})=1-P(E)=1-\frac{n}{2^{n-1}}$$ 여기서 n은 막대기를 잘라서 얻은 조각의 개수입니다. 원리: n
n개의 정수로 이루어진 배열 arr[n]이 주어졌을 때, 모든 인접한 연속 요소 쌍의 곱을 구하는 것이 이 문제의 목표입니다.여기서 연속 요소란 배열에서 서로 이웃한 두 요소를 의미합니다. 즉, 현재 i번째 요소 arr[i]에 있을 때 연속 요소는 바로 뒤의 arr[i+1]
정수 n개로 이루어진 배열 arr[n]이 주어졌을 때, 배열에 포함된 모든 합성수(composite number)의 곱을 구하는 것이 이번 글에서 다룰 문제입니다.합성수란 무엇인가?합성수는 1과 자기 자신 이외의 약수를 가지는 수, 즉 두 개 이상의 자연수를 곱하여 만들 수 있는 자연수를 뜻합니다. 예를 들어 6은 2와 3을 곱해 만들 수 있으므로 합성수입니다. 쉽게 말해 소수가 아닌 1보다 큰 자연수라고 할 수 있습니다.입력 예시 1arr[] = {1, 2, 4, 5, 6, 7}출력24설명: 배열 속 합성수는 4와 6이며, 두 수
문제 소개n개의 정수로 이루어진 배열 arr[n]과 하나의 정수 k가 주어졌을 때, 배열 arr[]의 요소 중 k로 나누어 떨어지는 모든 요소의 곱을 구하는 것이 이 문제의 목표입니다.이 문제를 해결하려면 배열의 처음부터 끝까지 모든 요소를 순회하면서 각 요소가 k로 나누어 떨어지는지 확인하고, 조건을 만족하는 요소들을 곱한 결과를 변수에 저장하면 됩니다.예를 들어 배열 arr[] = {1, 2, 3, 4, 5, 6}이 있고 k = 2라고 가정해 보겠습니다. 이 배열에서 2로 나누어 떨어지는 수는 2, 4, 6이며, 이들의 곱은 2
정수 n이 주어졌을 때, 첫 n개의 자연수를 각각 세제곱한 값들을 모두 더한 합계를 구하는 것이 이번 문제의 목표입니다. 즉, n개의 자연수를 세제곱한 뒤 그 결과값들을 모두 합산해야 합니다.모든 n에 대해 결과는 다음과 같은 형태가 됩니다.1³ + 2³ + 3³ + … + n³예를 들어 n = 4라면, 위 문제의 결과는 1³ + 2³ + 3³ + 4³이 됩니다.입력 및 출력 예시입력4출력100설명1³ + 2³ + 3³ + 4³ = 100입력8출력1296설명1³ + 2³ + 3³ + 4³ + 5³ + 6³ + 7³ + 8³ = 12
조화 평균이란?자연수 배열이 주어졌을 때, 해당 숫자들의 조화 평균(harmonic mean)을 계산하여 출력하는 프로그램을 만들어 보겠습니다.조화 평균은 각 값의 역수(reciprocal)를 취한 뒤, 그 역수들의 산술 평균을 구하고 다시 역수를 취한 값입니다. 주로 속도나 비율처럼 서로 역수 관계에 있는 데이터의 평균을 구할 때 유용하게 활용됩니다.$$Harmonic\: Mean=\frac{n}{\frac{1}{a}+\frac{1}{b}+\frac{1}{c}+...}$$여기서 n은 주어진 요소의 총 개수이며, a, b, c...
자연수로 이루어진 배열이 주어졌을 때, 해당 배열의 평균 절대 편차(Mean Absolute Deviation)를 계산하는 것이 이 프로그램의 목표입니다. 평균 절대 편차를 정확히 이해하고 구하려면 평균(mean), 분산(variance), 표준편차(standard deviation)에 대한 기본적인 통계 개념이 먼저 필요합니다. 평균 절대 편차 계산 순서 평균 절대 편차를 구하기 위해서는 다음 단계를 순서대로 따라야 합니다. 배열의 평균을 계산합니다 각 요소의 절대 편차를 계산합니다 계산된 모든 편차를 더합니다 공식에 대입하여