정사각형의 한 변의 길이와 접는 횟수가 주어졌을 때, 그 횟수만큼 접은 뒤 남는 정사각형의 넓이를 구하는 것이 이 문제의 목표입니다.
정사각형은 모든 변의 길이가 같고 네 내각이 모두 90도인 2차원 도형입니다.
정사각형을 접을 때는 다음과 같은 순서로 진행합니다.
왼쪽 위 모서리에서 오른쪽 아래 방향으로 접어 삼각형 형태로 만듭니다.
두 번째 접기는 위에서 아래 방향으로 접습니다.
세 번째 접기는 다시 왼쪽에서 오른쪽으로 접습니다.
이후에는 위의 단계를 같은 방식으로 반복하며 접기를 계속 진행합니다.
예시
입력: side = 23, fold = 4 출력: n번 접은 후 정사각형의 넓이 : 6.53086
이 문제는 다음과 같은 접근 방식으로 해결할 수 있습니다.
- 먼저 접기 전 정사각형의 넓이를 구합니다. 즉, area = side × side 입니다.
- 접기를 반복할 때마다 겉으로 드러나는 면적이 줄어들어, 전체 넓이는 접는 횟수에 따라 지수적으로 감소합니다.
- 최종 넓이는 초기 넓이를 pow(3, fold), 즉 3의 fold 제곱으로 나눈 값입니다.
알고리즘
시작
함수 double area_nfold(double side, double fold)
Step 1 → 변수 area를 선언하고 side * side 값으로 초기화
Step 2 → (area * 1.0 / pow(3, fold)) 값을 반환
함수 int main()
Step 1 → 변수 side = 23, fold = 4를 선언하고 초기화
Step 2 → area_nfold(side, fold) 함수를 호출한 뒤 결과 출력
종료
예제 코드
#include <bits/stdc++.h>
using namespace std;
// n번 접은 후 정사각형의 넓이를 계산하는 함수
double area_nfold(double side, double fold){
double area = side * side;
return area * 1.0 / pow(3, fold);
}
int main(){
double side = 23, fold = 4;
cout << "n번 접은 후 정사각형의 넓이 :" << area_nfold(side, fold);
return 0;
}
실행 결과
n번 접은 후 정사각형의 넓이 :6.53086
위 프로그램은 먼저 한 변의 길이를 제곱하여 초기 넓이를 구한 뒤, 접는 횟수만큼 거듭제곱한 값(pow(3, fold))으로 나누어 최종 넓이를 계산합니다. 예를 들어 한 변이 23이고 4번 접는다면, 23 × 23 = 529를 3⁴ = 81로 나눈 약 6.53086이 결과가 됩니다.