인접한 길이를 곱했을때의 값을 벡터에 넣고 그 최대값을 구해서
그 최대값에서 벡터내 3번 뒤의 값을 빼면 직사각형에서 작은 직사각형을 뺀 우리가 구하고자 하는
육각형이 나온다.
그림으로 표현하면 아래와 같다. 처음에는 더 복잡한 로직을 생각해서 구현하려하니
어려웠지만 아래처럼 로직을 짜니 생각보다 풀만한 문제였다
https://www.acmicpc.net/problem/2477
#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;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1181/c++] 단어 정렬 (0) | 2022.07.01 |
---|---|
[백준 10610/c++] 30 (0) | 2022.07.01 |
[백준 2839/c++] 설탕 배달 (0) | 2022.06.30 |
[백준 1051/c++] 숫자 정사각형 (0) | 2022.06.29 |
[백준 2941/c++] 크로아티아 알파벳 (0) | 2022.06.28 |
댓글