백준 - 단계별로 풀어보기 [2477]
https://www.acmicpc.net/problem/2477
풀이
어떻게 풀어야할까 고민을 많이 한 문제..
큰 사각형에서 작은 사각형의 넓이를 빼는 식으로 문제 해결을 해 보았습니다.
작은 사각형을 구하는 방법은 연속되는 두개의 방향 짝에 끼인 두개의 방향의 길이 곱이 작은사각형 넓이입니다.
그리고 연속되는 두개의 방향짝을 제외한 나머지 길이 두개의 곱이 큰 사각형 넓이입니다.
즉, 큰 사각형의 넓이는 방향이 한번씩만 입력되고, 작은 사각형의 넓이는 방향이 두번씩 입력됩니다.
Code
#include <iostream>
using namespace std;
void main() {
int num;
int arr[6][2];
int cnt[4] = { 0, };
int o = 0, t = 0, h = 0, f = 0;
int s_sqrt = 1;
int b_sqrt = 1;
cin >> num;
for (int i = 0; i < 6; i++) {
cin >> arr[i][0] >> arr[i][1];
switch (arr[i][0])
{
case 1:
o++;
cnt[0] = o;
break;
case 2:
t++;
cnt[1] = t;
break;
case 3:
h++;
cnt[2] = h;
break;
case 4:
f++;
cnt[3] = f;
break;
default:
break;
}
}
int s_1[2] = { 0, };
for (int i = 0; i < 4; i++)
{
if (cnt[i] == 1)
{
s_1[i] = i;
}
}
b_sqrt = arr[s_1[0]][1] * arr[s_1[1]][1];
for (int i = 0; i < 6; i++)
{
int checknum1 = (i + 1) % 6;
int checknum2 = (i + 2) % 6;
if (arr[i][0] == arr[checknum2][0])
s_sqrt *= arr[checknum1][1];
}
cout << ((b_sqrt - s_sqrt) * num) << endl;
}
'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글
[백준 / BOJ] C++ 2580 스도쿠 (0) | 2022.08.02 |
---|---|
[백준 / BOJ] C++ 3053 택시 기하학 (0) | 2022.07.20 |
[백준 / BOJ] C++ 4153 직각삼각형 (0) | 2022.07.14 |
[백준 / BOJ] C++ 3009 네번째 점 (0) | 2022.07.14 |
[백준 / BOJ] C++ 1085 직사각형에서 탈출 (0) | 2022.07.13 |