백준/문제풀이_python
1025 제곱수 찾기 _python
휴대용치즈
2022. 11. 30. 22:23
https://www.acmicpc.net/problem/1025
1025번: 제곱수 찾기
첫째 줄에 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 표에 적힌 숫자가 1번 행부터 N번 행까지 순서대로 한 줄에 한 행씩 주어진다. 한 행에 적힌 숫자는 1번 열부터 M번 열까지 순서대로 주어지
www.acmicpc.net
연두해요~
문제 접근
노가다를 해라. 모든 접근을 탐색해라! 브루트포스.
범위가 작아서 브루트포스로 풀 수 있는 문제
- 1 ≤ N, M ≤ 9
등차수열로 각 칸을 지나가라고 했다. 그러니 행은 2씩더하고 열은 3씩더하는 방법도 가능하다.
이동을 N이나 M보다 작은 수 만큼 이동이 가능하다.
시작점을 N과 M번씩 반복해서 잡아준다.
그 다음 등차수열만큼 이동하면서 가장 큰 값을 찾는다.
코드
import sys
input = sys.stdin.readline
"""
등차수열.
시작위치를 정하고
0~(N,M)까지 반복하면서 최대값 찾기
"""
N,M = map(int,input().split())
arr = []
for i in range(N):
arr.append(list(map(int,list(input().replace('\n', '')))))
maxNum = -1
for x in range(N): #시작 지점 설정
for y in range(M):
for i in range(-N,N): #등차수열
for j in range(-M,M):
if i==0 and j==0: continue
row = x
col = y
num = ''
while 0<=row<N and 0<=col<M:
num += str(arr[row][col])
row += i
col += j
if int(num)**0.5 == int(int(num)**0.5):
maxNum = max(int(num), maxNum)
print(maxNum)
128ms