백준 [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
Uh oh!
There was an error while loading. Please reload this page.
-
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