티스토리 뷰

알고리즘

49. 블록의 최댓값

홍복치 2020. 12. 28. 20:45

인프런 - it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 강의를 바탕으로 공부한 내용입니다.

문제는 비공개로 입력예제와 출력예제만을 가지고 포스팅

 

 

입력예제 1

4

2 0 3 1

1  1 2 3

 

출력예제 1

17

 

풀이 

- 2차원 배열 문제

- 정면에서 봤을 때 값들로 세로 행을 일치 시켜 a배열에 입력한다.

- 오른쪽에서 봤을 때 값들은 b배열에 역순으로 넣는다.

- for문을 돌면서 b값보다 큰 값들은 b값으로 바꿔준다

- 마지막으로 합계를 구해서 sum을 출력한다.

 

* 오른쪽에서 봤을 때 값들을 역순으로 넣는다는 생각과, 정면 값들로 세로 행을 일치시킨다는 것을 생각해내야 쉽게 풀 수 있었음

 

#include <stdio.h>
using namespace std;
int a[11][11], b[11];


// 49. 블록의 최댓값
int main() {
    int n, i, j, sum=0;
    scanf("%d", &n); //격자 개수
    for(i=1;i<=n;i++){
        scanf("%d", &b[i]); //정면 정보
        for(j=1;j<=n;j++){
            a[j][i]=b[i];
        }
    }
    for(i=n;i>=1;i--){
        scanf("%d", &b[i]);
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            if(a[i][j]>b[i]){
                a[i][j]=b[i];
            }
        }
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            sum+=a[i][j];
        }
    }
    
    printf("%d\n", sum);
    return 0;
}
 

 

'알고리즘' 카테고리의 다른 글

52. Ugly numbers  (0) 2020.12.30
50. 영지(DP)  (0) 2020.12.29
48. 각 행의 평균과 가장 가까운 값  (0) 2020.12.24
47. 봉우리  (0) 2020.12.23
46. 멀티태스킹(카카오 먹방 문제 변형)  (0) 2020.12.22
최근에 올라온 글
Total
Today
Yesterday