Sena's garden

[백준/C언어] 3009번: 네 번째 점 본문

백준/C언어

[백준/C언어] 3009번: 네 번째 점

paraam02 2024. 8. 28. 22:36

 

문제

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

 

입력: 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.

출력: 직사각형의 네 번째 점의 좌표를 출력한다.

 

 


 

 

코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

	int x[4], y[4];

	for (int i = 0; i < 3; i++) {
		scanf("%d %d", &x[i], &y[i]);
	}

	if (x[0] == x[1])
		x[3] = x[2];
	else if (x[0] == x[2])
		x[3] = x[1];
	else
		x[3] = x[0];

	if (y[0] == y[1])
		y[3] = y[2];
	else if (y[0] == y[2])
		y[3] = y[1];
	else
		y[3] = y[0];

	printf("%d %d", x[3], y[3]);

	return 0;
}

 

 

 


 

 

이 문제는 if~elseif~else를 이용해 해결할 수 있다. 우선 x좌표와 y좌표를 저장할 배열에 scanf를 이용해 세 점의 좌표를 저장한다. 이때 직접 다 써서 저장할 수도 있지만, 간단히 하기 위해 for문을 이용했다. 먼저 남은 한 점의 x좌표를 구해볼 것이다. if문의 조건으로 x[0]이 x[1]과 같다고 둔다면, 다른 두 점의 좌표가 서로 같아야 한다. 그러므로 구해야 하는 x[3]의 좌표가 x[2]와 같다는 것을 알 수 있다. else if문의 조건으로 이번에는 x[0]이 x[2]와 같다고 한다면, x[3]은 x[1]과 같다. 마지막으로 else의 경우, 즉 x[0]이 x[3]과 같은 경우 밖에 남지 않았기 때문에 이를 이용해 x[3]에 x[0] 값을 저장한다. y[3]의 좌표 또한 x[3]과 같은 과정을 통해 구할 수 있다. 이렇게 모두 구한 좌표는 printf를 통해 출력하여 문제를 해결할 수 있다.