[Baekjoon] 1025. 제곱수 찾기

2025. 1. 30. 20:05·코딩테스트/Python
728x90
반응형

🔗 Problem Link

https://www.acmicpc.net/problem/1025


❔Thinking

  • 주어진 표에서, 일정한 간격으로 이동하며 숫자를 선택해 완전 제곱수를 만든다.
  • 만들 수 있는 완전 제곱수 중 가장 큰 수를 반환한다. 완전 제곱수를 만들 수 없는 경우 -1을 반환한다.
  • 완전 제곱수는 어떤 정수를 제곱한 수이다.

💻Solution

import sys, math
input = sys.stdin.readline

N, M = map(int, input().split())
board = [list(input().rstrip()) for _ in range(N)]

def check(num: int):
    return math.isqrt(num) ** 2 == num

answer = set()
for row_k in range(N+1):
    for col_k in range(M+1):
        if row_k == 0 and col_k == 0:
            continue
        for i in range(N):
            for j in range(M):
                for dr, dc in [(1, 1), (1, -1), (-1, 1), (-1, -1)]:
                    tmp_num = []
                    start_i, start_j = i, j
                    while 0 <= start_i < N and 0 <= start_j < M:
                        tmp_num.append(board[start_i][start_j])
                        num = int(''.join(tmp_num))
                        if check(num):
                            answer.add(num)
                        start_i += dr * row_k
                        start_j += dc * col_k

print(max(answer, default=-1))

🗝️keypoint

  1. 일정한 간격이란 등차수열을 말하며, 9x9 표이기 때문에 모든 경우의 확인이 가능하다.
  2. 행과 열의 이동 간격이 모두 0인 경우, 이동이 불가능하기 때문에 넘어가야 한다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Baekjoon] 1062. 가르침  (0) 2025.02.02
[Programmers] Level 2. 양궁대회  (1) 2025.01.31
[Programmers] Level 2. 혼자 놀기의 달인  (0) 2025.01.28
[Baekjoon] 1202. 보석 도둑  (0) 2025.01.28
[Programmers] Level 2. 혼자서 하는 틱택토  (0) 2025.01.24
'코딩테스트/Python' 카테고리의 다른 글
  • [Baekjoon] 1062. 가르침
  • [Programmers] Level 2. 양궁대회
  • [Programmers] Level 2. 혼자 놀기의 달인
  • [Baekjoon] 1202. 보석 도둑
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 1025. 제곱수 찾기
상단으로

티스토리툴바