© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 11880 - 개미

2024-11-16
BOJ
브론즈 II
cpp
원본 문제 보기
수학
기하학

문제

BOJ 11880 - 개미

세 막대의 길이가 주어질 때, 가장 긴 막대의 제곱과 나머지 두 막대 합의 제곱을 더한 값을 구하라.

입력

테스트 케이스 수 T, 각 케이스마다 세 정수가 주어진다.

출력

각 케이스마다 max^2 + (나머지 합)^2을 출력한다.

예제

입력출력
1 3 4 574

풀이

세 수 중 최댓값과 나머지의 합으로 계산한다.

  1. 세 수 중 최댓값을 max로 구한다
  2. 나머지 두 수의 합 sum을 구한다
  3. max^2 + sum^2을 출력한다

핵심 아이디어: 개미가 이동하는 거리의 제곱과 관련된 기하학적 계산으로, 직각삼각형의 빗변 관계와 유사하다.

코드

#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
  ios::sync_with_stdio(false);
  cin.tie(NULL);
 
  int T;
 
  cin >> T;
 
  long long a, b, c, max_abc, sum;
  for (int i = 0; i < T; i++)
  {
    cin >> a >> b >> c;
    max_abc = max({a, b, c});
 
    if (max_abc == a)
    {
      sum = b + c;
    }
    else if (max_abc == b)
    {
      sum = a + c;
    }
    else
    {
      sum = a + b;
    }
 
    cout << max_abc * max_abc + sum * sum << "\n";
  }
 
  return 0;
}

복잡도

  • 시간: O(T) (T: 테스트 케이스 수)
  • 공간: O(1)