https://www.acmicpc.net/problem/11880
문제
코드
#include <bits/stdc++.h>
using namespace std;
#include <cmath>
#define PI 3.141592653589793
#define ll long long
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while(t--)
{
ll a, b, c;
cin >> a >> b >> c;
ll big = max(a, b);
ll mbig = max(big, c);
ll sum;
if (mbig == a)
{
sum = b+c;
}
else if (mbig == b)
{
sum = a+c;
}
else
{
sum = a+b;
}
cout << mbig*mbig + sum*sum << '\n';
}
}
풀이
직육면체의 전개도에서 살펴보면 최단거리를 구하려면, 입력받은 세 수 중 가로가 최대가 되어야한다.
따라서 max함수를 2번 이용하여 세 수 중 가장 큰 값을 찾는다.
이후 조건문을 통해(가장 큰 값의 경우에 따라) 두 번째로 큰 수와 세 번째로 큰 수의 합을 정의한다.
마지막으로 피타고라스 정리를 통해 (가장 큰 수)^2 + (두 번째 큰 수 + 세 번째 큰 수)^2 을 출력한다.
결과
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/c++] 2745번 진법변환 (0) | 2022.02.07 |
---|---|
[백준/python] 11005번 진법 변환 2 (0) | 2022.02.07 |
[백준/python] 10825: 국영수 (0) | 2022.02.06 |
[BOJ/python] 11656번 접미사 배열 (0) | 2022.02.06 |
[백준 / python] 5789번 한다 안한다 (1) | 2022.02.06 |