본문 바로가기

Algorithm

(C++) - 백준(BOJ) 2863번 : 이게 분수?

반응형

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

 

2863번: 이게 분수?

문제 상근이는 덧셈과 나눗셈을 엄청나게 못한다. 이런 상근이를 위해 정인이는 상근이에게 다음과 같은 문제를 냈다. 정인이는 양의 정수 A,B,C,D로 이루어진 2*2 표를 그렸다. A B C D 위와 같은 표가 있을 때, 표의 값은 A/C + B/D 이다. 상근이는 표를 몇 번 돌리면 표의 값이 최대가 되는지 궁금해졌다. 표는 90도 시계방향으로 돌릴 수 있다. 문제 상단의 표를 1번 회전 시키면 다음과 같다. C A D B 2번 회전 시키면 다음과 같이

www.acmicpc.net

간단한 노가다 문제였습니다.

Code

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    double a[5];
    double ans[4];
    for (int i = 1; i <= 4; i++)
        cin >> a[i];
    ans[0] = a[1] / a[3] + a[2] / a[4];
    ans[1] = a[3] / a[4] + a[1] / a[2];
    ans[2] = a[4] / a[2] + a[3] / a[1];
    ans[3] = a[2] / a[1] + a[4] / a[3];
    double rot = 0;
    int mini = 10;
    //최대값 찾기
    for (int i = 0; i < 4; i++)
        if (rot < ans[i])
            rot = ans[i];
    //최대값이 여러개면 가장 작은 회전 수 찾기
    for (int i = 0; i < 4; i++)
        if (rot == ans[i])
            mini = min(mini, i);
    cout << mini << '\n';
}