백준 [1025] 제곱 수 찾기 #252
youbeen2798
started this conversation in
1일 1알고리즘
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
https://www.acmicpc.net/problem/1025
문제
난이도: 골드 5
N행 M열의 표 A가 있고, 표의 각 칸에는 숫자가 하나씩 적혀있음
서로 다른 1개 이상의 칸을 선택할 때, 행의 번호가 선택한 순서대로 등차수열을 이루고 있어야 하며, 열의 번호도 선택한 순서대로 등차수열을 이루고 있어야 함
이렇게 선택한 칸에 적힌 수를 순서대로 이어붙이면 정수 하나를 만들 수 있음
만들 수 있는 정수 중에서 가장 큰 완전 제곱수를 구하는 문제( 완전 제곱수란 어떤 정수를 제곱한 수)
만약, 제곱수를 만들 수 없는 경우에는 -1을 출력
완전 탐색문제
문제를 이해하는데 시간이 오래걸리지만, 한번 이해하면 쉽게 풀리는 문제
함수 1
함수2
구현
<문제 풀이 예시>
예를 들어,
n = 2, m = 3,
행렬은
123
456
이라 할 때 answer이 갱신되는 과정을 살펴보자.
예시1.
x = 0, y = 0, dx = 1, dy =2 라면,
curX = 0, curY = 0 이므로, value = 1
cur X = 1, curY = 2이므로, value = 16(제곱수)
cur X = 2, curY = 3은 행렬을 벗어나므로 while문 밖으로 나옴
--> answer = 16
예시2.
x = 1, y = 2, dx = 0, dy = -2라면,
curX = 1, curY = 2이므로, value = 6
curX = 1, curY = 0이므로, value = 64(제곱수)
curX = 1, curY = -2는 행렬 벗어남 -> while문 밖으로
--> answer = 64로 갱신
최종 결과값: 64
Beta Was this translation helpful? Give feedback.
All reactions