개수 세기

문제 링크

개수 세기

분석

주어지려는 정수의 개수와 정수 목록이 주어지고, 이후에 찾고자 하는 특정 정수가 주어집니다.

정수의 개수에 해당하는 만큼 배열을 할당하고, 해당 개수만큼 입력을 반복해서 받아야합니다.

입력받은 정수들을 순회하면서 찾으려는 정수가 몇 번 등장하는지 확인하여 출력하면 됩니다.

풀이

int main()
{
    // 주어지는 정수의 개수
    int NumberCount;

    scanf("%d", &NumberCount);

    // 주어질 정수를 저장할 배열
    int* NumArr = (int*)malloc(NumberCount * sizeof(int));

    // 주어지는 정수를 입력받는 반복문
    for (int i = 0; i < NumberCount; ++i)
    {
        scanf("%d", &NumArr[i]);
    }

    // 찾으려고 하는 정수
    int TargetNumber;

    scanf("%d", &TargetNumber);

    // 찾으려고 하는 정수의 개수
    int FoundCount = 0;

    // 주어진 정수를 순회하는 반복문
    for (int i = 0; i < NumberCount; ++i)
    {
        // 찾으려고 하는 정수와 같은 경우
        if (TargetNumber == NumArr[i])
        {
            ++FoundCount;
        }
    }

    printf("%d", FoundCount);
    
    // 사용한 동적배열의 메모리 해제
    free(NumArr);
    NumArr = NULL;

    return 0;
}

성능 요약

시간 복잡도는 $O(n)$입니다.

  • 주어지는 정수를 입력받는 반복문 $O(n)$
  • 주어진 정수를 순회하는 반복문 $O(n)$
  • $O(n) + O(n) = O(2n)$

공간 복잡도는 $O(n)$입니다.

  • 주어질 정수를 저장할 배열 $O(n)$

메모리: 1112 KB

시간: 0 ms

Date:     Updated:

카테고리:

태그:

Baekjoon 카테고리 내 다른 글 보러가기

댓글남기기