백준/문제풀이_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