simm4256   7년 전

70%까지 갔다가 틀렸다고 나오네요.

제가 푼 알고리즘은 다음과 같습니다.



1. n,m이 주어지면 가능한 공차는 (1-n ~ n , 1-m ~ m)이다.

예를 들어 n=2, m=3이면 행에서 등차수열을 만들 때 가능한 공차는 -1,0,1이고 열에선 -2~2이다.

각 공차의 조합에 대해 모든 경우를 탐색한다.


2. 탐색할 공차의 조합을 정했다면 어느 위치에서부터 탐색을 시작할지 정한다.

이 또한 (1~n, 1~m)이 가능한데, n=2, m=3이면 가능한 시작 위치는 (1,1), (1,2), (1,3), (2,1), (2,2), (2,3)이다.

이 모든 경우를 탐색한다.


3. 탐색할 공차와 시작위치를 정했다면 시작위치의 숫자부터 주어진 공차로 이동하여 한 숫자씩 붙여가며 제곱수인지 확인한다.

ex)

n=2, m=3일 때 공차가 -1,1이고 시작위치가 (2,1)이고

주어진 배열이

123

456

이라면

4, 42

에 대해 제곱수인지 확인하고 현재까지 구한 가장 큰 제곱수를 저장한다.


4. 1~3을 반복하여 가장 큰 제곱수를 찾는다.



알고리즘상에는 전혀 문제가 없어보이는데..

코드상에 문제가 있는걸까요?

도저히 모르겠네요..

댓글을 작성하려면 로그인해야 합니다.