본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 2477/c++] 참외밭

by tokkiC 2022. 7. 1.

인접한 길이를 곱했을때의 값을 벡터에 넣고 그 최대값을 구해서

그 최대값에서 벡터내 3번 뒤의 값을 빼면 직사각형에서 작은 직사각형을 뺀 우리가 구하고자 하는

육각형이 나온다.

그림으로 표현하면 아래와 같다. 처음에는 더 복잡한 로직을 생각해서 구현하려하니

어려웠지만 아래처럼 로직을 짜니 생각보다 풀만한 문제였다

https://www.acmicpc.net/problem/2477

 

2477번: 참외밭

첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;


int main(){
	int n,di,l,maxi,minis,maxis,ans;
	int len[6];
	vector<int> tok;
	
	cin >> n;

	for(int i = 0; i < 6; i++){
		cin >> di >> l;
		len[i] = l;
	}
	
	for(int i = 0; i <= 4; i++){
		tok.emplace_back(len[i] * len[i+1]);
	}
    
	tok.emplace_back(len[0] * len[5]);
	maxi = max_element(tok.begin(), tok.end())-tok.begin();
	maxis = *max_element(tok.begin(), tok.end());
	minis = tok[(maxi + 3)%6];
	
	ans = n*(maxis - minis);
	
	cout << ans << "\n";
	
	return 0;
}

댓글