문제 : https://www.acmicpc.net/problem/9063
9063번: 대지
첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다.
www.acmicpc.net
1. 내 해답
// 좌표 값이 들어올 때마다 minx, maxx, miny, maxy 갱신
#include <cstdio>
int main()
{
int N = 0;
int a = 0, b = 0;
int minx = 10001, maxx = -10001, miny = 10001, maxy = -10001;
scanf("%d", &N);
for(int i = 0 ; i < N ; i++)
{
scanf("%d %d", &a, &b);
if ( minx > a ) minx = a;
if ( miny > b ) miny = b;
if ( maxx < a ) maxx = a;
if ( maxy < b ) maxy = b;
}
printf("%d\n", ( maxx - minx ) * ( maxy - miny ));
return 0;
}
2. 다른 사람의 해답
# 리스트에 입력을 전부 받은 후 x좌표와 y좌표의 리스트를 따로 나누고 min/max를 구한다.
import os
A=list(map(int,os.read(0,os.fstat(0).st_size).split()))
print((max(A[1::2])-min(A[1::2]))*(max(A[2::2])-min(A[2::2])))
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 2581번: 소수 (0) | 2024.03.31 |
---|---|
백준 1978번: 소수 찾기 (0) | 2024.03.22 |
백준 9506번: 약수들의 합 (1) | 2024.03.22 |
백준 2501번: 약수 구하기 (0) | 2024.03.20 |
백준 5086번: 배수와 약수 (0) | 2024.03.15 |