• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

다른 풀이 방식

22.09.21 23:01 작성 조회수 218

0

측면과 정면을 입력받아 따로 front, right 배열에 할당하였습니다.

2차원 배열의 정면을 시작으로(n)해서 맨 뒤쪽까지 할당받는 식으로 접근하여 측면의 값과 정면의 값을 서로 비교하면서 값을 할당하였습니다.

#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	int n, i, j, pos = 0, sum = 0;
	scanf("%d", &n);
	vector<vector<int> >a(n + 1, vector<int> (n + 1, 0));
	int front[n + 1] = {};
	int right[n + 1] = {};

// front 입력 
	for(i = 1; i <= n; i++) {
		scanf("%d", &front[i]);
	}
//	right 입력 
	for(i = 1; i <= n; i++) {
		scanf("%d", &right[i]);
	}
	
//	값 할당 
	for(i = n; i >= 1; i--) {
		pos++;
		for(j = 1; j <= n; j++) {
			if(right[pos] <= front[j]) {
				a[i][j] = right[pos];
			} else if(front[j] == 0) {
				a[i][j] = 0;
			} else {
				a[i][j] = front[j];
			}
		}
	}

// 합 계산 
	for(i = 1; i <= n; i++) {
		for(j = 1; j <= n; j++) {
			sum += a[i][j];
		}
	}
	printf("%d", sum);
	return 0;
}

답변 1

답변을 작성해보세요.

0

안녕하세요^^

굉장히 나이스한 코드네요. 좋은 코드 감사합니다!!