[C++] 백준 2477번: 참외밭

be_clever·2022년 1월 13일
0

Baekjoon Online Judge

목록 보기
27/172

문제 링크

2477번: 참외밭

문제 요약

1m21m^2 넓이의 참외밭에서 나는 참외의 수가 주어지고, 반시계 방향으로 육각형 밭의 변의 방향과 길이가 주어질 때, 밭에서 나는 참외의 수를 구해야 한다.

접근 방법

가장 긴 가로변과 세로변은 인접해 있다는 것을 문제의 그림을 보면 쉽게 알 수 있습니다.

가장 긴 가로변과 가징 긴 세로변으로부터, 이 둘이 인접하지 않은 방향으로 두 번 건너뛰면 육각형에서 안쪽으로 들어간 가로와 세로 부분을 쉽게 찾을 수 있습니다.

코드

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
	int k, w = 0, h = 0, wi = 0, hi = 0;
	cin >> k;

	vector<pair<int, int>> v;
	for (int i = 0; i < 6; i++)
	{
		int d, l;
		cin >> d >> l;

		if (d <= 2)
		{
			if (l > w)
				w = l, wi = i;
		}
		else
		{
			if (l > h)
				h = l, hi = i;
		}

		v.push_back({ d, l });
	}

	int pos = wi;
	if (wi + 1 == hi || wi == 5 && hi == 0)
		pos = hi;

	cout << (w * h - v[(pos + 2) % 6].second * v[(pos + 3) % 6].second) * k;
	return 0;
}
profile
똑똑해지고 싶어요

0개의 댓글