티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 3009번 네 번째 점
https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

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

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

세 점이 주어졌을 때 축과 평행한 직사각형을 만들기 위한 네 번째 점을 찾아 출력

 

2. 풀이

축과 평행한 직사각형을 그려보면
x 값은 2개의 값이 2쌍 있고, y 값도 2개의 값이 2쌍 있다는 것을 알 수 있습니다.
 
아래 예시를 살펴보면,
네 점 중에 x 는 1과 7이 2개 씩 있고, y 는 2와 6이 2개 씩 있습니다.

축과 평행한 직사각형 예시

 
생각해보면 '축과 평행한 직사각형' 이 가지는 당연한 속성입니다.
이 속성을 이용해서 네 번째 점을 찾고 출력하는 코딩을 작성해봤습니다.
 
출력할 네 번째 점의 좌표 x 는
1) x1 과 x2 가 같으면 x3,
2) x1 과 x3 가 같으면 x2,
3) 그렇지 않으면 x1 입니다.
 
y 도 마찬가지 방식으로 구하면 됩니다.
구현한 코드는 아래 참고바랍니다.

 

3. 코드

#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
3009_네 번째 점
1112KB	0ms
*/
#include <cstdio>

int main(){
#ifdef _WIN32
	freopen("input.txt", "r", stdin);
#endif // _WIN32
	int x1, y1, x2, y2, x3, y3;
	scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3);
	
	int x, y;

	if (x1 == x2) x = x3;
	else if (x1 == x3) x = x2;
	else x = x1;

	if (y1 == y2) y = y3;
	else if (y1 == y3) y = y2;
	else y = y1;

	printf("%d %d\n", x, y);
	return 0;
}
728x90
반응형
댓글