🙇‍♀️블록의 최댓값

현수는 블록놀이를 좋아합니다.

현수에게 정면에서 본 단면과 오른쪽 측면에서 본 단면을 주고 최대 블록개수를 사용하여 정면과 오른쪽 측면에서 본 모습으로 블록을 쌓으라 했습니다.

현수가 블록을 쌓는데 사용해야 할 최대 개수를 출력하는 프로그램을 작성하세요.

정면

오른쪽 측면

위에서 본 높이

위에서 봤을 때 각 칸의 블록의 개수입니다.

정면에서의 높이 정보와 오른쪽 측면에서의 높이 정보가 주어지면 사용할 수 있는 블록의 쵀대 개수를 출력하세요.

▣ 입력설명
첫 줄에 블록의 크기 N(3<=N<=10)이 주어집니다. 

블록이 크기는 정사각형 N*N입니다.

두 번째 줄에 N개의 정면에서의 높이 정보가 왼쪽 정보부터 주어집니다.

세 번째 줄에 N개의 오른쪽 측면 높이 정보가 앞쪽부터 주어집니다.

블록의 높이는 10 미만입니다.

▣ 출력설명
첫 줄에 블록의 최대 개수를 출력합니다.

▣ 입력예제 1 
4
2 0 3 1
1 1 2 3

▣ 출력예제 1
17

🚀풀이

정면과 오른쪽 측면의 정보를 받을 배열 두 개를 만든다.

이 배열을 각 행마다 비교를 하는데 이 때 더 작은 것이 결과값에 합해져야한다.

큰값이 들어온다면 정사영의 모습이 달리지기 때문이다.

물론 값이 같은 경우는 그냥 합하면 된다.

int n;
vector<int> seq1;
vector<int> seq2;

void setting()
{
	cin >> n;
	int temp;
	for (int i = 0; i < n; ++i)
	{
		cin >> temp;
		seq1.push_back(temp);
	}

	for (int i = 0; i < n; ++i)
	{
		cin >> temp;
		seq2.push_back(temp);
	}
}

void solve()
{
	int res = 0;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			if (seq1[i] > seq2[j])
			{
				res += seq2[j];
			}
			else
			{
				res += seq1[i];
			}
		}
	}

	cout << res;
}

🚀전체 코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int n;
vector<int> seq1;
vector<int> seq2;

void setting()
{
	cin >> n;
	int temp;
	for (int i = 0; i < n; ++i)
	{
		cin >> temp;
		seq1.push_back(temp);
	}

	for (int i = 0; i < n; ++i)
	{
		cin >> temp;
		seq2.push_back(temp);
	}
}

void solve()
{
	int res = 0;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			if (seq1[i] > seq2[j])
			{
				res += seq2[j];
			}
			else
			{
				res += seq1[i];
			}
		}
	}

	cout << res;
}

int main() 
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	setting();
	solve();

	return 0;
}