49. 블록의 최댓값

강지훈·2021년 11월 30일
0

현수는 블록놀이를 좋아합니다. 현수에게 정면에서 본 단면과 오른쪽 측면에서 본 단면을 주
고 최대 블록개수를 사용하여 정면과 오른쪽 측면에서 본 모습으로 블록을 쌓으라 했습니다.
현수가 블록을 쌓는데 사용해야 할 최대 개수를 출력하는 프로그램을 작성하세요.
정면

위에서 봤을 때 각 칸의 블록의 개수입니다. 정면에서의 높이 정보와 오른쪽 측면에서의 높이
정보가 주어지면 사용할 수 있는 블록의 쵀대 개수를 출력하세요.
▣ 입력설명
첫 줄에 블록의 크기 N(3<=N<=10)이 주어집니다. 블록이 크기는 정사각형 N*N입니다.
두 번째 줄에 N개의 정면에서의 높이 정보가 왼쪽 정보부터 주어집니다.
세 번째 줄에 N개의 오른쪽 측면 높이 정보가 앞쪽부터 주어집니다.
블록의 높이는 10 미만입니다.
▣ 출력설명
첫 줄에 블록의 최대 개수를 출력합니다.
▣ 입력예제 1
4
2 0 3 1
1 1 2 3
▣ 출력예제 1
17

#include
#include
using namespace std;

int main() {
int n,num,i,j,cnt=0;
cin >> n;
vector<vector >map(n+1, vector(n+1));
//정면으로 바라본 볼록 세팅
for(i=1;i<=n;i++){
cin>>num;
for(j=1;j<=n;j++){
map[j][i]=num;
}
}

//오른쪽 방향에서 바라본 볼록 세팅 
for(i=1;i<=4;i++){
	cin>>num;
	for(j=n;1<=j;j--){
		if(map[i][j]>num) map[i][j]=num;
	}
}

for(i=1;i<=n;i++){
	for(j=1;j<=n;j++){
		cnt+=map[i][j];
	}
	
}
cout<<cnt;

return 0;

}

profile
never stop

0개의 댓글