Koala - 5기/기초 알고리즘 스터디

<4주차> [BOJ / C++] 11880번 - 개미

거북이목 2022. 2. 6. 21:36

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

 

11880번: 개미

승현이는 방학을 맞아 심심하지만, 공부는 하기 싫습니다. 이렇게 방 안에서 하루하루 시간을 낭비하던 중, 승현이는 자신의 직육면체 모양의 지우개에 개미 한 마리가 붙어 있다는 것을 알게

www.acmicpc.net

 

 

 

문제

 

 

코드

#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 을 출력한다.

 

 

결과