기하학 10

[백준 9036] 대지 [Python]

풀이 입력받은 좌표 x,y에 대해 최소/최대값을 구한 후 가로 세로 길이를 구해 직사각형의 넓이를 구하는 문제다. 좌표들을 x, y에 대해 순차적으로 정렬 후 가장 작은 좌표와 큰 좌표값을 구해 직사각형의 최대 넓이를 계산해 주자. 소스코드 소스코드 보기 출처 9063번: 대지 첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. www.acmicpc.net

[백준 21335] Another Eruption [Python]

풀이 이전에 풀이한 문제와 동일한 방식으로 풀이할 수 있다. [백준 20352] Circus [Python] 풀이 입력받은 원의 면적을 이용해 원의 둘레를 구해주면 된다. 소스코드 소스코드 보기 출처 20352번: Circus In the modern world, the spotlight has shifted entirely from live shows to televised recordings. Well, not entirel kyr-db.tistory.com 정사각형의 면적을 입력받아 지름을 통해 원의 둘레를 구하자. 소스코드 소스코드 보기 출처 21335번: Another Eruption A volcano has recently erupted in Geldingadalur, Iceland. Fort..

[백준 26566] Pizza [Python]

풀이 조각 피자의 면적과 가격, 피자 한판의 반지름과 가격이 주어질 때 어떤 종류의 피자를 먹는 것이 더 싸게 먹을 수 있는지 알아내는 문제다. 면적을 가격으로 나눌 때 가치가 높은 쪽이 동일 가격 대비 더 싸게 먹을 수 있는 피자이다. 소스코드 소스코드 보기 출처 26566번: Pizza There’s a pizza store which serves pizza in two sizes: either a pizza slice, with area A1 and price P1, or a circular pizza, with radius R1 and price P2. You want to maximize the amount of pizza you get per dollar. Should you pick the ..

[백준 20215] Cutting Corners [Python]

풀이 w x h 크기의 작사각형을 자를 경우, 자르는 길이는 w + h 이다. 이때, 직사각형 모양으로 자르는 방법이 아닌, 직사각형에 대해 대각선으로 자를 때 길이와의 차이를 구하면 된다. 소스코드 소스코드 보기 출처 20215번: Cutting Corners A large coffee spill in the warehouse of the Busy Association of Papercutters on Caffeine has stained the corners of all paper in storage. In order to not waste money, it was decided that these dirty corners should be cut off of all pieces of paper. A..

[백준 1002] 터렛 [C]

풀이 두 좌표를 기준으로 반지름만큼의 원이 형성될 때 원의 둘레가 겹치는 좌표의 개수를 구하면 된다. 아래의 그림은 주어진 Test Case에 대한 시각화 자료이다. 만약 입력으로 주어지는 두 원이, 동일한 좌표와 반지름을 가진다면 '류재명'이 있을 수 있는 위치는 무한대이다. 두 원의 정보에 대한 입력을 struct Circle을 통해 입력받고, 두 원의 중심거리(d)와 두 원의 반지름의 차(diff_radius), 두 원의 반지름의 합(sum_radius)을 구해서 다음과 같은 비교를 통해 문제를 해결할 수 있다. 입력받은 두 원의 정보가 동일하다면 류재명이 있을 수 있는 위치는 무한대이다. d == sum_radius 이거나, d == diff_radius(아래 그림 참고)이면 한 접점에서만 만난다..

[백준 2166] 다각형의 면적 [C]

풀이 "백준 11758, CCW"를 이용해 풀이했다. 벡터곱의 값은 두 벡터로 이루어지는 평행사변형의 넓이와 동일하므로, 벡터곱의 값을 반으로 나눈 값을 더해주면 된다. 기준점이 필요하기 때문에 처음에 입력받은 좌표를 기준점으로 했다. 소스코드 #include typedef struct{ double x, y; }Point; int main(){ int N; scanf("%d", &N); Point p[N]; for (int i = 0; i < N; i++) scanf("%lf %lf", &p[i].x, &p[i].y); double sum = 0; for (int i = 1; i < N; i++) sum += ((p[i-1].x - p[0].x)*(p[i].y - p[0].y) - (p[i-1].y -..

[백준 1085] 직사각형에서 탈출 [C]

풀이 (x, y)가 경계선(x, 0), (0, y)과, 직선 x = w, y = h 중 어디까지의 거리가 최솟값인지 구하면 된다. 소스코드 #include #define MIN(a,b) (a < b ? a: b) int main(){ int x, y, w, h, min; scanf("%d %d %d %d", &x, &y, &w, &h); printf("%d", MIN(MIN(w - x, x), MIN(h - y, y))); } 출처 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net