본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 4632 : Copier Reduction

반응형

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

 

4623번: Copier Reduction

The input consists of one or more test cases, each of which is a single line containing four positive integers A, B, C, and D, separated by a space, representing an AxBmm image and a CxDmm piece of paper. All inputs will be less than one thousand. Followin

www.acmicpc.net

자료형을 이용하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

 while loop를 수행합니다.  1. 줄여야할 이미지의 가로, 세로를 의미하는 일차원 a배열, 기준 이미지의 가로, 세로를 의미하는 일차원 b배열, 답을 출력할 percent를 선언해줍니다. 2. a, b를 정렬해줍니다. 

📔 풀이과정

다시 while loop를 수행합니다. 적정 percent를 찾았다면 break해줍니다.

📔 정답출력

#include <bits/stdc++.h>
using namespace std;
int main(){
    while(1){
        int a[2], b[2], percent = 0;
        cin >> a[0] >> a[1] >> b[0] >> b[1];
        if(!a[0] && !a[1] && !b[0] && !b[1]) break;
        sort(a, a + 2);
        sort(b, b + 2);
        
        while(1) {
            double q = (double)a[0] * (100 - percent) / 100;
            double w = (double)a[1] * (100 - percent) / 100;
            if(q <= (double)b[0] && w <= (double)b[1]) break;
            percent++;
        }
        cout << 100 - percent << "%" << '\n';
    }
}

📕 Code

#include <bits/stdc++.h>
using namespace std;
int main(){
    while(1){
        int a[2], b[2], percent = 0;
        cin >> a[0] >> a[1] >> b[0] >> b[1];
        if(!a[0] && !a[1] && !b[0] && !b[1]) break;
        sort(a, a + 2);
        sort(b, b + 2);
        
        while(1) {
            double q = (double)a[0] * (100 - percent) / 100;
            double w = (double)a[1] * (100 - percent) / 100;
            if(q <= (double)b[0] && w <= (double)b[1]) break;
            percent++;
        }
        cout << 100 - percent << "%" << '\n';
    }
}