-
[SISS/C언어 멘토링] 25-1학기 7주차 멘토링 계획서25-1 SISS/C멘토링 2025. 5. 3. 17:30
기본 정보
- 멘토 - 김서영, 강민지 / 멘티 - 이다희
- 활동 예정일: 2025년 5월 12일
- 장소: 명신관 613호
- 학습 자료: 프로그래밍개론 강의 자료 12(박영훈 교수님)
활동 계획
- 지난 주 내용 복습 및 과제 확인
- 동적 메모리 할당
- 동적 메모리 할당 예제 풀이
과제
(아래의 문제를 동적 메모리 할당을 이용하여 풀이해주세요.)
1. 백준 행렬 곱셈(2740)
→ https://www.acmicpc.net/problem/2740
2. 백준 부울행렬의 부울곱(14492)
→ https://www.acmicpc.net/problem/14492
3. 백준 수 정렬하기 2(2751 - 이 문제는 시간을 줄이기 위해 정렬 알고리즘에 대한 학습이 필요한 문제이니 참고해주세요. 저는 병합 정렬을 이용하여 풀이하였습니다.)
→ https://www.acmicpc.net/problem/2751
6주차 과제 해설
// 2592.c #include <stdio.h> #pragma warning(disable:4996) void input_data(int *arr, int *sum); void find_answer(int *arr, int sum); int main(void) { int arr[1001] = {0}; // 입력 수의 빈도 저장용 배열 int sum = 0; input_data(arr, &sum); find_answer(arr, sum); return 0; } void input_data(int *arr, int *sum) { int num; int *p = arr; // 포인터 p로 arr 배열을 가리킴 for (int i = 0; i < 10; i++) { scanf("%d", &num); *sum += num; *(p + num) += 1; // 포인터 산술 연산으로 arr[num] 접근 } } void find_answer(int *arr, int sum) { int avg = sum / 10; int freq = 0; // 최빈값 저장 int max = 0; // 최빈값의 빈도수 int *p = arr + 10; // 10부터 시작하여 10씩 증가하면서 계산 for (int i = 10; i <= 1000; i += 10) { printf("%d ", *(p + i / 10)); // 포인터 산술 연산으로 arr[i] 접근 if (*(p + i / 10) > max) { max = *(p + i / 10); freq = i; } } printf("\n%d\n%d\n", avg, freq); }
// 2920.c #include <stdio.h> #define N 8 int main() { int arr[N]; int a = 0; int *p = arr; // 배열 arr의 시작 주소를 가리키는 포인터 p // 배열에 값 입력받기 for (int i = 0; i < N; i++) { scanf("%d", p + i); // 포인터 산술 연산을 사용하여 arr[i]에 값 입력 } // 배열 값을 비교하여 ascending, descending, mixed 판별 for (int i = 0; i < N - 1; i++) { int diff = *(p + i) - *(p + i + 1); // 포인터 산술 연산으로 배열 값 비교 if (diff == 1) { a--; } else if (diff == -1) { a++; } } // 결과 출력 if (a == N - 1) { printf("ascending"); } else if (a == -(N - 1)) { printf("descending"); } else { printf("mixed"); } return 0; }
// 2747.c #include <stdio.h> int main() { int fibo[46] = {0, 1}; int *p = fibo; // 배열 fibo의 시작 주소를 가리키는 포인터 int n = 0; // 피보나치 수열 계산 (포인터 산술을 사용) for(int i = 2; i < 46; i++){ *(p + i) = *(p + i - 1) + *(p + i - 2); // 포인터 산술 연산을 사용하여 값 계산 } scanf("%d", &n); printf("%d\n", *(p + n)); // 포인터 산술로 fibo[n] 출력 return 0; }
'25-1 SISS > C멘토링' 카테고리의 다른 글
[SISS/C언어 멘토링] 25-1학기 7주차 과제 해설 (0) 2025.05.03 [SISS/C언어 멘토링] 25-1학기 6주차 멘토링 계획서 (0) 2025.05.03 [SISS/C언어 멘토링] 25-1학기 5주차 멘토링 계획서 (0) 2025.05.03 [SISS/C언어 멘토링] 25-1학기 4주차 멘토링 계획서 (0) 2025.04.03 [SISS/C언어 멘토링] 25-1학기 3주차 멘토링 계획서 (0) 2025.03.27