0으로 만들기

시간 제한1초메모리 제한1024 MB

요약
주어진 N개의 수 사이에 덧셈, 뺄셈, 곱셈과 최대 한 쌍의 괄호를 끼워 넣어 수식의 값이 0이 되게 만들거나, 불가능하면 NO를 출력한다.
난이도

보통10점 중 6점

유형
그리디, 구현, 수학
정답자
아직 제출이 없습니다

문제

NN개의 정수로 이루어진 수열 A_1,A_2,...,A_NA\_1, A\_2, ..., A\_N이 주어집니다. 여러분은 수와 수 사이에 연산자를 하나씩 끼워 넣어서 수식을 완성해야 합니다. 단, 수열의 순서는 바꿀 수 없습니다.

연산자는 덧셈(+), 뺄셈(-), 곱셈(×)만 사용할 수 있으며, 연산자의 우선순위는 곱셈이 덧셈과 뺄셈보다 앞섭니다.

또한 여러분은 완성된 수식에 최대 하나의 괄호를 사용할 수 있는데, 여는 괄호 뒤에는 반드시 숫자가 등장해야 하며, 마찬가지로 닫는 괄호 앞에는 반드시 숫자가 등장해야 합니다. 사칙연산의 규칙상, 괄호 안에 들어있는 식을 먼저 계산해야 합니다.

다음은 올바른 수식과 그렇지 않은 수식의 예시입니다.

  • −1+2×6+7+(2−4)×9-1+2\times 6+7+(2-4)\times 9: 맨 앞의 숫자에 연산자가 사용되었으므로, 올바르지 않은 수식입니다.
  • 2×6(+3−5)−2×8+12\times 6(+3-5)-2\times 8+1: 여는 괄호 뒤에 연산자가 등장하였으므로, 올바르지 않은 수식입니다.
  • 3×62+5−9×0+13\times 6\quad 2+5-9\times 0+1: 숫자 사이에 연산자가 사용되지 않았으므로, 올바르지 않은 수식입니다.
  • 2×(3)−5+4×2+1−9×32\times (3)-5+4\times 2+1-9\times 3: 올바른 수식입니다.
  • 2023×12−2×(14−0)2023\times 12-2\times (14-0): 올바른 수식입니다.
  • 2023)×12−2×(17−02023)\times 12-2\times (17-0: 괄호의 순서가 바뀌었으므로, 올바르지 않은 수식입니다.
  • (12+34)×(56×78)−90(12+34)\times (56\times 78)-90: 두 쌍 이상의 괄호가 사용되었으므로, 올바르지 않은 수식입니다.

연산자와 괄호를 적절히 추가하여 완성된 수식의 결괏값이 00이 되도록 할 수 있다면 첫째 줄에 YES를 출력하고, 둘째 줄에 결괏값이 00이 되도록 하는 완성된 수식을 출력해 주세요.

만약 연산자와 괄호를 어떻게 사용해도 수식의 결괏값을 00으로 만들 수 없다면 NO를 출력해 주세요.

입력

첫째 줄에 수의 개수 NN이 주어집니다. (30,000≤N≤50,000)(30,000≤N≤50,000)

둘째 줄에는 수열 A_1,A_2,...,A_NA\_1, A\_2, ..., A\_N이 공백으로 구분되어 주어집니다. (0≤A_i≤10,000)(0≤A\_i≤10,000)

출력

연산자와 괄호를 적절히 추가하여 완성된 수식의 결괏값이 00이 되도록 할 수 있다면 첫째 줄에 YES를 출력하고, 둘째 줄에 결괏값이 00이 되도록 하는 완성된 수식을 출력해 주세요. 단, 곱셈 기호는 *를 사용하여 출력해야 합니다.

만약 연산자와 괄호를 어떻게 사용해도 수식의 결괏값을 00으로 만들 수 없다면 NO를 출력해 주세요.

예제3

  1. 예제 1

    입력
    7
    2 1 3 5 2 7 1
    
    예상 출력
    YES
    2*1-(3-5)*2-7+1
    
  2. 예제 2

    입력
    4
    1 2 6 1
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    2
    0 1
    
    예상 출력
    YES
    0*1