Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 배열 안에서 키 K가 등장할 확률 계산하기

문제 개요

크기가 n인 배열이 주어졌을 때, 특정 원소 k가 배열에 존재한다면 그 출현 확률을 구하는 것이 이번 글의 목표입니다.

배열의 첫 번째 원소부터 n번째 원소까지 전체를 순회하면서 키 k와 일치하는 값이 있는지 탐색합니다. 키가 배열 안에 존재하면 해당 확률을 계산해 출력하고, 존재하지 않는다면 0을 출력하면 됩니다.

입력 예시

arr[] = { 1, 2, 3, 4, 5, 6 }
K = 5

출력 예시

배열에서 키 5의 확률 : 0.166

입력 예시 2

arr[] = { 1, 2, 3, 4, 5, 6, 7 }
K = 8

출력 예시 2

배열에서 키 8의 확률 : 0

동작 원리 설명

예를 들어 크기가 7인 배열과 키 값 2가 주어졌다고 가정해 보겠습니다. 이 경우 배열을 총 7번 순회하면서 값이 2인 원소를 찾게 됩니다.

순회 도중 2를 발견할 때마다 임시 변수(카운터)의 값을 1씩 증가시키고, 다른 값이라면 카운터를 증가시키지 않은 채 다음 원소로 넘어갑니다. 순회가 끝난 후 결과는 다음과 같이 판단합니다.

  • 카운터가 0이라면 키가 배열에 존재하지 않는다는 의미이므로 확률은 0입니다.

  • 카운터가 0이 아닌 값을 가진다면 아래 공식으로 키 k의 확률을 계산합니다.

    확률(k) = 키 k의 총 출현 횟수 ÷ 배열의 전체 원소 개수

    키 K의 출현 횟수 = 4

    배열의 전체 원소 개수 = 7

    키(k)의 확률 = 4 / 7 = 0.57

알고리즘

Start
Step 1 → 배열에서 키의 확률을 계산하는 함수 선언
    float probab_key(int arr[], int size, int key)
        float count = 0 으로 초기화
        Loop For int i = 0 and i < size and i++
            IF arr[i] == key
                count++
            End
        End
        return count / size
Step 2 → main() 함수에서
        int arr[] = { 1, 2, 3, 4, 5, 6 } 선언
        int key = 5 선언
        int size = sizeof(arr) / sizeof(arr[0]) 선언
        probab_key(arr, size, key) 호출
Stop

C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;
// 배열에서 키가 등장할 확률을 계산하는 함수
float probab_key(int arr[], int size, int key){
    float count = 0;
    for (int i = 0; i < size; i++){
        if (arr[i] == key)
            count++;
    }
    return count / size;
}
int main(){
    int arr[] = { 1, 2, 3, 4, 5, 6 };
    int key = 5;
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "배열에서 키 " << key << "의 확률 : " << probab_key(arr, size, key);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열에서 키 5의 확률 : 0.166667

배열 { 1, 2, 3, 4, 5, 6 }에는 키 5가 한 번만 등장하고 전체 원소는 6개이므로, 확률은 1/6 ≈ 0.166667이 됩니다. 이처럼 단순한 선형 탐색과 카운터만으로도 배열 내 특정 값의 출현 확률을 손쉽게 계산할 수 있습니다.