it 취업을 위한 알고리즘 문제풀이 입문 : 49. 블록의 최댓값
🙇♀️블록의 최댓값
현수는 블록놀이를 좋아합니다.
현수에게 정면에서 본 단면과 오른쪽 측면에서 본 단면을 주고 최대 블록개수를 사용하여 정면과 오른쪽 측면에서 본 모습으로 블록을 쌓으라 했습니다.
현수가 블록을 쌓는데 사용해야 할 최대 개수를 출력하는 프로그램을 작성하세요.
위에서 봤을 때 각 칸의 블록의 개수입니다.
정면에서의 높이 정보와 오른쪽 측면에서의 높이 정보가 주어지면 사용할 수 있는 블록의 쵀대 개수를 출력하세요.
▣ 입력설명
첫 줄에 블록의 크기 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;
}