Home > Study > C Language > C Example > [ex32] 케이크 자르기

[ex32] 케이크 자르기
Study Language

문제 설명


아래와 같이 둥근 케이크를 2번의 칼질로 4조각으로 나누려고 한다.

ex32_1

케이크의 둘레에 시계방향으로 1~100까지 일정한 간격으로 번호가 부여되어 있다.

ex32_2

칼로 자르려고 하는 부분은 2개의 정수로 표현한다. 칼로 자르려는 부분이 2군데 주어질 때 칼로 잘리는 부분이 교차하는지 유무를 판단하는 프로그램을 작성하시오.
아래 예는 12 53과 99 45를 자른 예를 나타낸다.

ex32_3

#include <stdio.h>

int Solve(int A, int B, int C, int D)
{
	// 여기서부터 작성
}
int main(void)
{
	int a, b, c, d, cross;
	// 입력받는 부분
	scanf("%d %d", &a, &b);
	scanf("%d %d", &c, &d);

	cross = Solve(a, b, c, d);

	// 출력하는 부분
	if (cross == 1) printf("cross");
	else printf("not cross");

	return 0;
}

입력 설명


첫 번째 줄에는 첫 번째 현의 정보를 나타내는 두 정수가 입력된다.
두 번째 줄에는 두 번째 현의 정보를 나타내는 두 정수가 입력된다.

출력 설명


주어진 두 잘린 부분이 교차한다면 "cross", 교차하지 않는다면 "not cross"를 출력한다.

입력 예시


12 53 
99 45 

출력 예시


cross

부가정보


[입력 예시 2]
23 77
79 83
 
[출력 예시 2]
not cross

정답 코드


#include <stdio.h>

int Solve(int A, int B, int C, int D)
{
	if (A > B) 
	{
		int tmp = A;
		A = B;
		B = tmp;
	}
	
	if (C > D) 
	{
		int tmp = C;
		C = D;
		D = tmp;
	}
	
	if (((A > C) && (D > A) && (D < B)) || ((A < C) && (B > C) && (B < D))) 
	{
	    return 1;
	}

	return 0;
}

int main(void)
{
	int a, b, c, d, cross;
	// 입력받는 부분
	scanf("%d %d", &a, &b);
	scanf("%d %d", &c, &d);

	cross = Solve(a, b, c, d);

	// 출력하는 부분
	if (cross == 1) printf("cross");
	else printf("not cross");

	return 0;
}

메모


printf 내부의 \n 습관화 필요