Notice
Recent Posts
Recent Comments
Link
Sena's garden
[백준/C언어] 3009번: 네 번째 점 본문
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력: 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 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를 통해 출력하여 문제를 해결할 수 있다.
'백준 > C언어' 카테고리의 다른 글
| [백준/C언어] 1085번: 직사각형에서 탈출 (0) | 2024.08.27 |
|---|---|
| [백준/C언어] 11653번: 소인수분해 (0) | 2024.08.26 |
| [백준/C언어] 1978번: 소수 찾기 (0) | 2024.08.25 |
| [백준/C언어] 9506번: 약수들의 합 (0) | 2024.08.24 |
| [백준/C언어] 2501번: 약수 구하기 (0) | 2024.08.23 |
