jyamethyst21 님의 블로그

백준 2903번 - 중앙 이동 알고리즘 (PYTHON 풀이) 본문

CODING 💻

백준 2903번 - 중앙 이동 알고리즘 (PYTHON 풀이)

jyamethyst21 2025. 9. 6. 15:20

문제:

 

처음 문제를 보면 어렵게 느껴질 수 있는데 규칙만 찾으면 간단하게 풀 수 있다.

초기 상태에는 점이 무조건 네개이다. 나는 이걸 전체 개수로 보지 않고 가로 수 기준으로 보았다. 어차피 정사각형이니 세로 개수는 제곱만 해주면 되어서 규칙을 찾기 위해 가로 수만 보았다. 가로 한 변의 점 개수는 2개이다. (초기 규칙)

그 다음 한번 알고리즘이 동작하게 되면 가로 한 변의 점 개수는 3개, 두번 돌면 5개가 된다.

이를 식 형태의 규칙으로 바꾼 뒤 코드로 작성하면 다음과 같다.

 

풀이:

a=int(input())
print((2**a+1)**2)

처음 안쪽 괄호는 한 변의 개수를 찾는 규칙이고 바깥쪽 괄호는 가로*세로의 개수를 구하기 위해 만든 식이다.

다시 한번 살펴보면, 2는 초기 개수이다. 여기서 사용자로부터 입력 받은 숫자만큼 제곱하고 그 후 1을 더하면 한 변의 중간 지점에 점이 하나 더 찍힌다. 그런 다음 2를 다시 한번 제곱해서 나머지 한변까지 곱해주면 전체 점의 개수가 구해진다.

.

.

이런 문제는 규칙을 찾아내면 좀 더 쉽게 풀 수 있는 것 같다. 어렵게 생각하지말자!