1025번 - 제곱수 찾기
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을 반복하여 가장 큰 제곱수를 찾는다.
알고리즘상에는 전혀 문제가 없어보이는데..
코드상에 문제가 있는걸까요?
도저히 모르겠네요..
댓글을 작성하려면 로그인해야 합니다.
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을 반복하여 가장 큰 제곱수를 찾는다.
알고리즘상에는 전혀 문제가 없어보이는데..
코드상에 문제가 있는걸까요?
도저히 모르겠네요..