반응형
https://www.acmicpc.net/problem/2477
- 문제
ㄱ-자 와 비슷한 모양인 밭에서 자랄 수 있는 참외의 수를 구하는 문제이다.
- 해설
total을 통해 1,2,3,4(방향) 중에서 한번씩만 나온 것을 곱해주면 총 사각형의 면적을 구할 수 있고,
small을 통해 1,2,3,4 중에서 두 번씩 나온 것들 중에서 사이에 작은 사각형을 만드는 길이들을 구해서 작은 사각형의 면적을 구해
빼주면 된다.
이후에 면적당 참외가 자라는 만큼 곱하면 답이 된다.
- 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(pair<int, int> a, pair<int, int> b)
{
if (a.first == b.first)
return a.second < b.second;
return a.first < b.first;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int K, temp1, temp2, total = 1, small = 1;
vector<int> count(4, 0);
vector<int> v;
vector<pair<int, int>> vp;
cin >> K;
for (int i = 0; i < 6; i++)
{
cin >> temp1 >> temp2;
vp.push_back(pair<int, int>(temp1, temp2));
count[temp1 - 1]++;
}
for (int i = 0; i < 6; i++)
{
if (count[vp[i].first - 1] == 1)
{
total *= vp[i].second;
continue;
}
int next = (i + 1) % 6;
int nextnext = (i + 2) % 6;
if (vp[i].first == vp[nextnext].first)
{
small *= vp[next].second;
}
}
cout << (total - small) * K;
return 0;
}
- 새롭게 알게 된 점
X
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준][C++] 5086 : 배수와 약수 (0) | 2022.10.21 |
---|---|
[백준][C++] 1358 : 하키 (0) | 2022.10.21 |
[백준][C++] 11478 : 서로 다른 부분 문자열의 개수 (0) | 2022.10.21 |
[백준][C++] 1269 : 대칭 차집합 (0) | 2022.10.21 |
[백준][C++] 1764 : 듣보잡 (0) | 2022.10.21 |