


int time[]으로 넘기는 대신 int *time으로 넘겼다. 포인터로 배열을 참조하면, 동적할당과 크기 변경에 유리하다. 이전에 배열 이름은 배열의 시작 주소라고 배운 적이 있다.
만약 int time[] 배열이 100번지에 저장이 되어 있다면 time은 100이다. 그리고 *time은 time[0]이다.
이런 식으로
time[1] == *(time + 1),
time[2] == *(time + 2), ...이고
time[1] + 1 == *(time) + 1, ... 이런식으로 접근 및 응용 가능하다.
#include <stdio.h>
#pragma warning(disable:4996)
void input_time(int* N, int* time);
void find_answer(int N, int* time);
int main(void) {
int N;
int time[21];
input_time(&N, time);
find_answer(N, time);
return 0;
}
void input_time(int* N, int* time) {
int i;
scanf("%d", N);
for (i = 0; i < *N; i++)
{
scanf("%d", time + i);
}
/*for (i = 0; i < *N; i++) {
printf("%d ", *(time + i));
}*/
return;
}
void find_answer(int N, int* time) {
int Y_fee = 0, M_fee = 0;
int i;
for (i = 0; i < N; i++) {
//영식 요금제 계산
Y_fee += ((time[i] / 30) + 1) * 10;
//민식 요금제 계산
M_fee += ((time[i] / 60) + 1) * 15;
printf("time[%d] = %d : %d %d\n", i, time[i], Y_fee, M_fee);
}
if (Y_fee == M_fee) {
printf("Y M %d\n", M_fee);
}
else if(Y_fee > M_fee){
printf("M %d\n", M_fee);
}
else {
printf("Y %d\n", Y_fee);
}
return;
}