Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 해석
- 일상생활 영어표현
- 백준 27433번
- 알고리즘
- html
- 차이
- 논리 연산
- 백준 5086번
- 백준 5597번
- 백준 25305번
- C++
- Java
- 연속된 숫자의 합
- 백준 2525번
- 대칭 차집합
- 백준 2501번
- 잡다한 일
- C
- 백준 9506번
- 백준 #11382번 #
- 백준 1157번
- 백준 2587번
- 배열
- 백준 1269번
- 피라미드 출력
- 상세 풀이
- 5073번
- Unity
- 직각 삼각형
- javascript
Archives
- Today
- Total
YunDev
백준 10807번[C] - 상세 풀이 본문
1. 배열 크기를 정적으로 할당한 코드
#include <stdio.h>
int main() {
int num = 0, indexof = 0, count = 0;
int arr[100];
scanf("%d", &num);
for(int i = 0; i < num; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &indexof);
for(int i = 0; i<num; i++) {
if(arr[i] == indexof) {
count++;
}
}
printf("%d", count);
return 0;
}
풀이 : 배열의 크기를 직접 지정한 방식입니다. 입력한 숫자만큼 값을 배열에 저장하고 반복문을 돌며 찾고자 하는 숫자가 있다면 count를 증가시켜 결과를 출력합니다.
2. 동적 메모리 할당을 이용한 코드
#include <stdio.h>
int main() {
int num = 0, indexof = 0, count = 0;
scanf("%d", &num);
int *arr = (int*)malloc(num * sizeof(int)); //동적 메모리 할당
for(int i = 0; i < num; i++) {
scanf("%d ", &arr[i]);
}
scanf("%d", &indexof);
for(int i = 0; i<num; i++) {
if(arr[i] == indexof) {
count+=1;
}
}
printf("%d", count);
free(arr); //할당한 메모리 해제
return 0;
}
풀이 : 배열의 크기를 정적으로 할당해도 상관은 없지만 효율적인 메모리 사용을 위해서 입력받은 값만큼 동적으로 배열의 크기를 할당하여 풀었습니다. 여기서 동적 메모리 할당이란 프로그램이 실행되는 중인 런타임에 필요한 만큼의 메모리 공간을 확보하는 것을 의미합니다. 또한 힙(heap) 영역에 필요할 때마다 메모리 공간을 할당하고, 더 이상 필요하지 않을 경우 메모리를 해제해주는 과정을 의미하기도합니다.
이 부분은 메모리 구조에 대한 개념이 필요하기에 더 자세하게 공부해보는게 좋을 것 같습니다.
'Programming > Baekjoon Program' 카테고리의 다른 글
백준 2587번[C] - 상세 풀이 (0) | 2024.01.14 |
---|---|
백준 5597번[C] - 풀이 (0) | 2024.01.13 |
백준 27433번[C] - 상세 풀이 (0) | 2024.01.11 |
백준 2480번[C] - 상세 풀이 (2) | 2024.01.10 |
백준 2525번[C] - 상세 풀이 (0) | 2024.01.09 |