빠똥빠똥
10830번 행렬 제곱(행렬, 분할정복, 동적할당) - ☆ 본문
#문제링크 : https://www.acmicpc.net/problem/10830
<전략>
1. 거듭제곱수를 구했던 것과 마찬가지로 분할 정복을 진행한다.
※주의사항
1. B입력이 1일때와, 원소 입력이 1000일때, 등 경계값 예외처리 꼭 명심하자.
2. 선언된 2차원 배열을 이중포인터로 받을 수 없다. 배열이름은 선언된 순간 전체 크기만큼의 공간을 할당 받지만, 이중포인터는 동적으로 할당받아야 하므로 호환되지 않는 자료형이다.
3. C++에서 동적할당은 int *name = new int[size]; or int **name = new int* [size]; 와 같이 사용가능하다. 할당 해제는 delete[] name; 으로 한다.
4. 처음 코드는 B=1일때, mul에서 m을 반환하도록 작성했다. 결국, ans= m이 되어버리고 이후에 할당해제를 할때, ans나 m을 할당해제 하면 둘중 하나만 해제해도 둘다 해제되는 꼴이 된다. 따라서, 그대로 제출하면 런타임에러가 발생한다. 특정 경우에 동적할당된 포인터가 서로 같은 메모리를 가지는 순간은 없는지 유심히 살펴야한다.
5. 벡터를 사용해서 작성하면 더 간단하게 작성가능하다.
'백준' 카테고리의 다른 글
6549번 히스토그램에서 가장 큰 직사각형(세그먼트 트리, ceil) - ☆ (0) | 2020.08.25 |
---|---|
2749번 피보나치 수3(이중 벡터, 행렬 거듭제곱, 피보나치) - ☆ (0) | 2020.08.23 |
11401번 이항 계수3(거듭제곱 재귀분할, 페르마 소정리) - ☆ (0) | 2020.08.22 |
1629번 곱셈(재귀, 분할정복) - ☆ (0) | 2020.08.21 |
1992번 쿼드트리(재귀) (0) | 2020.08.21 |