jyamethyst21 님의 블로그

백준 15894번 - 수학은 체육과목 입니다 (PYTHON 풀이) 본문

CODING 💻

백준 15894번 - 수학은 체육과목 입니다 (PYTHON 풀이)

jyamethyst21 2025. 9. 10. 03:44

문제:

문제는 위와 같다. 직관적이라 이해가 쉬울 것 같다.

위 네모블럭과 같이 맨 아래의 개수만 받고 그 위에 네모블럭을 한개씩 줄이면서 붙였을 때 전체 둘레를 구하는 문제이다.

 

풀이:

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

문제는 코드 단 두 줄로 해결된다.

 

그림을 직접 그려보면 규칙을 쉽게 찾을 수 있는데, 우선 입력받는 크기인 맨 아래층(빨간색 변)은 입력받는 값인 a로, 그냥 a만큼 개수를 세면 된다.

그리고 끝변은 입력받는 크기에서 1을 빼고(1을 빼는 이유는 맨 윗층을 제거하기 위함이다. 맨 윗층은 무조건 3이기 때문에 그 다음에 더해줄 것이다.) 2를 곱해주면 각 줄의 끝변의 개수가 된다. (초록색 변) 그 다음 앞서 말한 맨 윗층은 무조건 3이 될 것이다. (파란색 변) 그래서 3을 더해주면 절반 이상은 끝났다.

마지막으로 더해줘야할 부분은 분홍색 변 부분이다. 문제를 다시 읽어보자. 해당 문제는 '정사각형' 네모 블럭에 대한 내용이다.

정사각형을 붙였을 때 남는 둘레는 0.5이므로(한 변의 길이가 1일 때) 두개면 1로 계산하면 된다. 이때 1은 입력 받는 a에서 -1을 해서 더해주면 된다.

 

그림을 그리지 않으면 시간이 좀 걸렸을 것 같다. 그래도 쉽게 풀어 다행이다!