Minwoo Dev.

[백준 9063번] 대지 - C99 본문

백준

[백준 9063번] 대지 - C99

itisminu 2023. 6. 6. 10:33
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