[백준][C] 10807번 개수 세기
개수 세기
문제 링크
분석
주어지려는 정수의 개수와 정수 목록이 주어지고, 이후에 찾고자 하는 특정 정수가 주어집니다.
정수의 개수에 해당하는 만큼 배열을 할당하고, 해당 개수만큼 입력을 반복해서 받아야합니다.
입력받은 정수들을 순회하면서 찾으려는 정수가 몇 번 등장하는지 확인하여 출력하면 됩니다.
풀이
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
댓글남기기