Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

빠똥빠똥

10830번 행렬 제곱(행렬, 분할정복, 동적할당) - ☆ 본문

백준

10830번 행렬 제곱(행렬, 분할정복, 동적할당) - ☆

조주똥 2020. 8. 22. 17:05

#문제링크 : 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. 벡터를 사용해서 작성하면 더 간단하게 작성가능하다.

Code