Algorithm/baekjoon

2167 이차원 배열의 합/10798 세로읽기

쿠뱃봉 2022. 2. 13. 23:03

1.2167 이차원 배열의 합

https://www.acmicpc.net/problem/2167

#include<iostream>
#include<string.h>
using namespace std;
int main() {
	cin.tie(NULL);
	cin.sync_with_stdio(false);
	int n, m;
	cin >> n >> m;

	int** arr = new int* [n];
	for (int i = 0; i < n; i++) {
		arr[i] = new int[m];
		
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> arr[i][j];
		}
	}




	int forn;
	cin >> forn;
	for (int a = 0; a < forn; a++) {
		int i, j, x, y;
		int sum=0;
		cin >> i >> j >> x >> y;
		for (int m = i-1; m <= x-1; m++) {
			for (int n = j-1; n <= y-1; n++) {
				sum+=arr[m][n];
				
			}

		}
		cout << sum<<"\n";
	}
	for (int i = 0; i < n; i++)
		delete[] arr[i];
	delete[] arr;
	return 0;
}

 

2.10798 세로읽기

https://www.acmicpc.net/problem/10798

 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

깨달은 점)

1.배열에 값을 넣을 때

#include<cstring>을 해서 string으로 입력받아서 size() 함수를 활용하는게 편하다는 것

2. 전역변수 char arr[5][15]; 는 모든 값이 '\0'으로 자동초기화 된다는 것

#include<iostream>
#include<cstring>
using namespace std;
char arr[5][15];
int main() {
	cin.tie(NULL);
	cin.sync_with_stdio(false);
	
	string str1;

	for (int i = 0; i < 5; i++) {
		cin >> str1;
		for (int j = 0; j < str1.size(); j++) {
			arr[i][j] = str1[j];
		}
	}

	for (int j = 0; j < 15; j++) {
		for (int i = 0; i < 5; i++) {
			if (arr[i][j] == '\0')
				continue;
			cout << arr[i][j];
		}
		
	}
	
}