미누에요
[백준 9063번] 대지 - C99 본문
728x90
반응형
SMALL
점을 입력받아 직사각형의 크기를 계산하는 문제이다.
#include <stdio.h>
int main(void) {
struct coma { // 점을 표현하기 위해 구조체 사용
int x;
int y;
};
int n = 0;
struct coma a[100001]; // n값이 최대 100000임
struct coma rst; // 결과값을 나타내는 점
struct coma max; // 제일 큰 max값에 해당하는 점을 담는 변수
struct coma min; // 제일 작은 min값에 해당하는 점을 담는 변수
max.x = -10001; // 최솟값
max.y = -10001; // 최솟값
min.x = 10001; // 최댓값
min.y = 10001; // 최댓값
scanf("%d", &n); // n 값 입력받기
for (int i = 0; i < n; i++) { // x,y 값 구조체 변수에 입력
scanf("%d %d", &a[i].x, &a[i].y);
}
for (int i = 0; i < n ; i++) {
if (max.x < a[i].x) {
max.x = a[i].x; // max 변수의 x 값에 x 좌표들 중 max값 넣기
}
if (min.x > a[i].x) {
min.x = a[i].x; // min 변수의 x 값에 min 값 넣기
}
if (max.y < a[i].y) {
max.y = a[i].y; // max 변수의 y 값에 max값 넣기
}
if (min.y > a[i].y) {
min.y = a[i].y; // min 변수의 y 값에 min값 넣기
}
}
rst.x = max.x - min.x; // x축 방향 길이
rst.y = max.y - min.y; // y축 방향 길이
int result = rst.x*rst.y; // 직사각형 넓이 구하기
printf("%d\n",result); // 출력
return 0;
}
C언어에는 max 함수와 min 함수가 없기 때문에 각 값과 비교하여 최대,최솟값을 구한다.
초기 max변수의 설정값은 나올 수 있는 값들 중 가장 작은 값인 -100001으로 설정하였다.
똑같이 초기 min 변수의 설정값은 나올 수 있는 값들 중 가장 큰 값인 100001로 설정.
어떤 변수라도 -100001보다 클 테니 max 변수에 새로운 값이 들어간다.
또 다음 인덱스값에 해당하는 값과 비교하여 값이 클 경우에 max에 새롭게 값이 들어가며, 아닐 경우 이전 값이 유지되는 방식이다.
728x90
반응형
LIST
'알고리즘' 카테고리의 다른 글
[백준 2441번] 별 찍기 - 4 (0) | 2023.06.07 |
---|---|
[백준 1284번] 집 주소 - C99 (0) | 2023.06.07 |
[백준1267번] 핸드폰 요금 - C99 (0) | 2023.06.06 |
[백준25704번] 출석 이벤트 - C99 (1) | 2023.06.06 |
[백준 5524번] 입실 관리 - C99 (0) | 2023.06.06 |