728x90
🏆 목차.
🛒 문제
3009번: 네 번째 점
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
www.acmicpc.net
🎨 코드
#include <iostream>
using namespace std;
struct Point {
int x;
int y;
};
int main() {
const int edge = 3; // 점의 개수
Point p[edge];
// 세 점의 좌표 입력
for (int i = 0; i < edge; ++i) {
cin >> p[i].x >> p[i].y;
}
// 찾고자 하는 네 번째 점
Point fourthPoint;
if (p[0].x == p[1].x) fourthPoint.x = p[2].x;
else if (p[0].x == p[2].x) fourthPoint.x = p[1].x;
else fourthPoint.x = p[0].x;
if (p[0].y == p[1].y) fourthPoint.y = p[2].y;
else if (p[0].y == p[2].y) fourthPoint.y = p[1].y;
else fourthPoint.y = p[0].y;
// 결과 출력
cout << fourthPoint.x << " " << fourthPoint.y;
return 0;
}
🎯 풀이
이번 문제는 규칙만 파악하면 간단하게 풀 수 있는 문제입니다.

예제 입력 1번을 예시로 들겠습니다.
5 5
5 7
7 5
가 입력됐을 때, x축에서 1,2번째 입력된 5가 한쌍이며 세번째 입력된 7은 쌍이 없습니다.
마찬가지로 y축에서 1, 3번째 입력된 5가 한쌍이며 두 번째 입력된 7은 쌍이 없습니다.
그럼 쌍이 없는 x와 y에 7이 정답이 됩니다.
예제 입력 2번도 예시를 들자면
30 20
10 10
10 20
가 입력됐을 때, x축에서 2,3번째 입력된 10이 한쌍이며 첫 번째 입력된 30은 쌍이 없습니다.
마찬가지로 y축에서 1,3번째 입력된 20이 한쌍이며 두 번째 입력된 10은 쌍이 없습니다.
그럼 쌍이 없는 x와 y에 30과 10이 정답이 됩니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++] 백준 2903번 : 중앙 이동 알고리즘 (0) | 2024.02.20 |
---|---|
[C++] 백준 11005 : 진법 변환 2 (1) | 2024.02.20 |
[C++] 프로그래머스 : 문자열 겹쳐쓰기(replace) (1) | 2023.11.12 |
[C++][sort] 백준 1431번 : 시리얼 번호 (1) | 2023.11.11 |
[C++][sort] 백준 1181번 : 단어 정렬 (0) | 2023.11.08 |