백준 1267 c : 수학

magicdrill·2025년 5월 19일

백준 문제풀이

목록 보기
606/673

백준 1267 c : 수학

배열을 함수 인자로 넘길 때 포인터 형으로 넘긴 이유?

int time[]으로 넘기는 대신 int *time으로 넘겼다. 포인터로 배열을 참조하면, 동적할당과 크기 변경에 유리하다. 이전에 배열 이름은 배열의 시작 주소라고 배운 적이 있다.
만약 int time[] 배열이 100번지에 저장이 되어 있다면 time은 100이다. 그리고 *timetime[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;
}

0개의 댓글