problem

#1738 스마트폰 구매 대작전 1

라비다 문제 링크

약간의 고민이 필요한 문제입니다. 해당 문제에서 고려해야할 점은

  1. 10일 마다 증가하는 시급의 값을 어떻게 계산할 것인가
  2. 충분한 돈을 벌 때 까지의 날 수를 어떻게 추적할 것인가

이렇게 두가지로 볼 수 있습니다. 이 점을 유의하면서 다음 코드를 보시기 바랍니다.

#include <stdio.h>

int T, N;

int main() {
	scanf("%d", &T);

	while (T--) {
		scanf("%d", &N);

		int days = 0; // 며칠이 지났는지 저장하는 변수입니다
		int earned = 0; // 현재까지 얼마나 벌었는지 저장하는 변수입니다

		while (earned < N) { // 번 돈이 필요한 돈 보다 적다면 계속 일을합니다
			earned += 5000 + (days / 10) * 200; // 기본 5000원 시급에 오른 임금을 계산하여 더해줍니다
			days++; // 하루가 지났으므로 days 변수를 1 증가시켜 줍니다
		}

		printf("%d\n", days);
	}

	return 0;
}

수식을 이용해서 인상된 시급을 계산할 수도 있지만, 다음과 같이 10째 날 마다 현재 시급에 200원을 더하는 방법도 있습니다.

#include <stdio.h>

int main() {
	int t;
	scanf("%d", &t);
 
	while (t--) {
		int price;
		scanf("%d", &price);

		int day = 0, sum = 0, alba = 5000;
 
		while (1) {
			day++;
			sum += alba;

			if (day % 10 == 0)
				alba += 200;

			if (sum >= price) {
				printf("%d\n", day);
				break;
			}
		}
	}
	return 0;
}