본문 바로가기

카테고리 없음

(C++) - 백준(BOJ) 11466번 : Alex Origami Squares

반응형

https://www.acmicpc.net/problem/11466

 

11466번: Alex Origami Squares

Alex is fond of origami — Japanese art of paper folding. Most origami designs start with a square sheet of paper. Alex is going to make a present for his mother. Present’s design requires three equal square sheets of paper, but Alex has only one rectan

www.acmicpc.net

수식을 세워 분기문을 써보는 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

직사각형의 너비, 높이를 저장할 double형 일차원 배열 a, 정답을 출력할 ans를 출력합니다.

직사각형을 90도 오른쪽으로 회전한다면 너비는 높이, 높이는 너비가 됩니다. 너비, 높이순으로 입력된 a[0], a[1]를 오름차순으로 정렬해줍니다. 앞으로 a[0]은 너비, a[1]은 높이라고 생각합니다.

📔 풀이과정

 1. 너비 * 3 < 높이라면 너비로만 이루어진 정사각형을 만드는 것이 최대이므로 ans = a[0]입니다.

 2. 너비 * 1.5 < 높이라면, 너비 * 2 < 높이 * 3, 높이 / 3인 a[1] / 3이 최소 3개 정사각형을 만들 수 있는 ans가 됩니다.

 3. 반대라면 너비 / 2가 ans가 됩니다.

 

📔 정답출력

ans를 소수점 4번째에서 반올림한 값을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
double a[2], ans;
int main(){
    cin >> a[0] >> a[1];
    sort(a, a + 2);
    if(a[0] * 3 < a[1]) ans = a[0];
    else if(a[0] * 1.5 < a[1]) ans = a[1] / 3;
    else ans = a[0] / 2;
    printf("%.3f", ans);
}