인프런 - 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 |