[백준/BOJ] 20363. 당근 키우기 [Silver 4]

jychan99·2021년 9월 25일
0
post-thumbnail
  1. 당근 키우기

문제 출처 : https://www.acmicpc.net/problem/20363

처음 작성했던 코드다.

code

#include <stdio.h>
int main()
{
	int X, Y, total = 0;
	scanf("%d %d", &X, &Y);
	int X_cnt = X, Y_cnt = Y;
	if (X >= Y)
	{
		total += X_cnt;
		total += Y_cnt;
		X_cnt -= Y_cnt / 10;
		while (1)
		{
			if (X_cnt == X && Y_cnt == Y)
				break;
			total += X - X_cnt;
			Y_cnt -= (X - X_cnt) / 10;
			X_cnt += X - X_cnt;
			total += Y - Y_cnt;
			X_cnt -= (Y - Y_cnt) / 10;
			Y_cnt += Y - Y_cnt;
		}
	}
	else
	{
		total += Y_cnt;
		total += X_cnt;
		Y_cnt -= X_cnt / 10;
		while (1)
		{
			if (X_cnt == X && Y_cnt == Y)
				break;
			total += Y - Y_cnt;
			X_cnt -= (Y - Y_cnt) / 10;
			Y_cnt += Y - Y_cnt;
			total += X - X_cnt;
			Y_cnt -= (X - X_cnt) / 10;
			X_cnt += X - X_cnt;
		}
	}
	printf("%d", total);
	return 0;
}

정말 바보같이 더하고 빼고 더하고 빼고를 반복하는 과정을 생각했다.
그러나 곧 깨달았다 한꺼번에 물을주면 한번만 빼도 된다는 사실을.

code

#include <stdio.h>
int main()
{
	int X, Y, total = 0;
	scanf("%d %d", &X, &Y);
	if (X >= Y)
		total = X + Y + (Y / 10);
	else
		total = X + Y + (X / 10);
	printf("%d", total);
	return 0;
}

이게 진짜 그리디알고리즘의 정수가 아닐까 싶다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글