© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

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

BOJ 4299 - AFC 윔블던

2024-08-03
BOJ
브론즈 IV
cpp
원본 문제 보기
수학
사칙연산

문제

BOJ 4299 - AFC 윔블던

두 팀의 점수 합 A와 점수 차 B가 주어질 때, 각 팀의 점수를 구하라. 불가능하면 -1을 출력한다.

입력

점수 합 A와 점수 차 B가 주어진다.

출력

높은 점수와 낮은 점수를 출력한다. 불가능하면 -1을 출력한다.

예제

입력출력
3 12 1

풀이

연립방정식 x + y = A, x - y = B를 풀어 각 점수를 구한다.

  1. A < B이면 불가능하므로 -1을 출력한다
  2. x = (A + B) / 2, y = (A - B) / 2로 계산한다
  3. x + y == A이고 x - y == B인지 검증한다 (정수 해 존재 확인)
  4. 검증 실패 시 -1, 성공 시 x와 y를 출력한다

핵심 아이디어: A+B가 홀수이면 정수 해가 없으므로 불가능하다. 검증 과정에서 이를 자연스럽게 걸러낸다.

코드

#include <iostream>
using namespace std;
 
int main()
{
  int a, b, x, y;
  cin >> a >> b;
  if (a < b)
    cout << "-1";
  else
  {
    x = (a + b) / 2;
    y = (a - b) / 2;
    if (x + y == a && x - y == b)
      cout << x << " " << y;
    else
      cout << "-1";
  }
  return 0;
}

복잡도

  • 시간: O(1)
  • 공간: O(1)