Recent Posts
Notice
No Rules Rules
참외밭 (feat. 백준, 2477번) 본문
728x90
반응형
참외밭
https://www.acmicpc.net/problem/2477
반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/2477
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(NULL);
pair<int, int> tmp[6];
register int K, ans = 0;
cin >> K;
for (register int i = 0, n, v; i < 6; ++i)
cin >> n >> v, tmp[i].first = n, tmp[i].second = v;
for (register int i = 0; i < 6; ++i)
if (tmp[i % 6].first == tmp[(i + 2) % 6].first && tmp[(i + 1) % 6].first == tmp[(i + 3) % 6].first) {
ans = (tmp[i % 6].second + tmp[(i + 2) % 6].second) * (tmp[(i + 1) % 6].second + tmp[(i + 3) % 6].second);
ans -= tmp[(i + 1) % 6].second * tmp[(i + 2) % 6].second;
break;
}
cout << ans * K;
return 0;
}
// *&)*@*
먼저 모든 참외밭은 다음중 하나에 속하게 됩니다.
- 시작되는 꼭지점과는 상관없이 무조건 4개의 조건중 하나의 참외밭이 문제로 주어집니다.
- 이때 공통점이 있습니다. 바로 가로가 2번 세로가 2번 연속된다는 것입니다.
- 그리고 가로 2개의 길이의 합과 세로 2개의 길이의 합은 가로의 총 길이, 세로의 총 길이와 같습니다.
- 즉 가로,세로,가로,세로 의 형태든 세로,가로,세로,가로 형태든 이것을 arr[0], arr[1], arr[2], arr[3] 이라고 한다면 (arr[0] + arr[2]) * (arr[1] * arr[3]) 은 사각형 전체의 넓이입니다. 또한 arr[1] * arr[2] 는 사각형 중 비어있는 공간입니다.
- 따라서 두 사각형 넓이의 차이가 참외밭이 됩니다.
- 하지만 여기서 문제는 아래와 같은 경우입니다.
바로 arr[0] ~ arr[5]까지 위 조건은 발생하지 않습니다. arr[3], arr[4], arr[5], arr[0] 으로 연속될 경우만 위 조건이 발생됩니다.
따라서 해당조건이 발생될 수 있도록 반복문 내 배열의 인덱스에 % 6을 취해줍니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
터렛 (feat. 백준, 1002번) (0) | 2022.08.04 |
---|---|
택시 기하학 (feat. 백준, 3053번) (0) | 2022.08.03 |
직각삼각형 (feat. 백준, 4153번) (0) | 2022.08.03 |
네 번째 점 (feat. 백준, 3009번) (0) | 2022.08.03 |
직사각형에서 탈출 (feat. 백준, 1085번) (0) | 2022.08.03 |
Comments