[백준 15726] 이칙연산 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
세 수와 두 연산자가 주어지는 상황에서, A, B, C가 주어질 때, 곱셈과 나눗셈을 한 번씩 사용하여 만들 수 있는 식의 최댓값을 구하는 문제입니다.
세 수의 순서는 바꿀 수 없으며, 가능한 식은 A × B ÷ C 또는 A ÷ B × C 두 가지입니다. 소수점 이하는 버립니다.
접근법
두 가지 가능한 식을 모두 계산하여 큰 값을 선택합니다.
부동소수점 연산으로 계산한 후 정수로 변환하면 소수점 이하를 버릴 수 있습니다. 두 결과 중 최댓값을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
var input = Array.ConvertAll(Console.ReadLine()!.Split(), double.Parse);
var a = input[0];
var b = input[1];
var c = input[2];
var result1 = (long)(a * b / c);
var result2 = (long)(a / b * c);
Console.WriteLine(Math.Max(result1, result2));
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long double a, b, c; cin >> a >> b >> c;
ll result1 = static_cast<ll>(a * b / c);
ll result2 = static_cast<ll>(a / b * c);
cout << max(result1, result2) << "\n";
return 0;
}