문제

캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다.

한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다.

캥거루는 최대 몇 번 움직일 수 있을까?

입력

첫째 줄에 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100)

출력

캥거루가 최대 몇 번 움직일 수 있는지 출력한다.

예제 입력 1

3 5 9

예제 출력 1

3

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int compare(const void *x,const void *y)
{
	return *(int *)x>*(int *)y?1:*(int *)x==*(int *)y?0:-1;
}

int main(void)
{
	int kangaroo[3], count=0;

	for(int i=0;i<3;i++)
		scanf("%d", &kangaroo[i]);
	qsort((void *)kangaroo,(size_t)3,sizeof(int),compare);

	while(kangaroo[1]-kangaroo[0]>1 || kangaroo[2]-kangaroo[1]>1)
	{
		if(kangaroo[1]-kangaroo[0]>kangaroo[2]-kangaroo[1])
		{
			kangaroo[2]=kangaroo[1];
			kangaroo[1]--;
		}
		else
		{
			kangaroo[0]=kangaroo[1];
			kangaroo[1]++;
		}

		count++;
	}

	printf("%d\n", count);
	return 0;
}
728x90

+ Recent posts