작성일 :

문제 링크

2985번 - 세 수

설명

세 개의 정수가 주어졌을 때,

이들 사이에 하나의 사칙연산 기호와 등호를 적절히 배치하여 올바른 등식 하나를 구성하는 문제입니다.


등식의 형태는 다음 두 가지 중 하나입니다:

  • 첫 번째와 두 번째 수 사이에 연산 기호를 넣고, 그 결과가 세 번째 수가 되는 경우 (예: 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
18
19
using System;

class Program {
  static void Main() {
    var input = Console.ReadLine().Split();
    int a = int.Parse(input[0]);
    int b = int.Parse(input[1]);
    int c = int.Parse(input[2]);

    if (a + b == c) Console.WriteLine($"{a}+{b}={c}");
    else if (a - b == c) Console.WriteLine($"{a}-{b}={c}");
    else if (a * b == c) Console.WriteLine($"{a}*{b}={c}");
    else if (a / b == c) Console.WriteLine($"{a}/{b}={c}");
    else if (a == b + c) Console.WriteLine($"{a}={b}+{c}");
    else if (a == b - c) Console.WriteLine($"{a}={b}-{c}");
    else if (a == b * c) Console.WriteLine($"{a}={b}*{c}");
    else if (a == b / c) Console.WriteLine($"{a}={b}/{c}");
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int a, b, c; cin >> a >> b >> c;

  if (a + b == c) cout << a << '+' << b << '=' << c;
  else if (a - b == c) cout << a << '-' << b << '=' << c;
  else if (a * b == c) cout << a << '*' << b << '=' << c;
  else if (a / b == c) cout << a << '/' << b << '=' << c;
  else if (a == b + c) cout << a << '=' << b << '+' << c;
  else if (a == b - c) cout << a << '=' << b << '-' << c;
  else if (a == b * c) cout << a << '=' << b << '*' << c;
  else if (a == b / c) cout << a << '=' << b << '/' << c;
  cout << "\n";

  return 0;
}