https://www.acmicpc.net/problem/14888
14888λ²: μ°μ°μ λΌμλ£κΈ°
첫째 μ€μ μμ κ°μ N(2 ≤ N ≤ 11)κ° μ£Όμ΄μ§λ€. λμ§Έ μ€μλ A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. (1 ≤ Ai ≤ 100) μ μ§Έ μ€μλ ν©μ΄ N-1μΈ 4κ°μ μ μκ° μ£Όμ΄μ§λλ°, μ°¨λ‘λλ‘ λ§μ (+)μ κ°μ, λΊμ (-)μ κ°μ,
www.acmicpc.net
λ¬Έμ
Nκ°μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄ A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. λ, μμ μ μ¬μ΄μ λΌμλ£μ μ μλ N-1κ°μ μ°μ°μκ° μ£Όμ΄μ§λ€. μ°μ°μλ λ§μ (+), λΊμ (-), κ³±μ (×), λλμ (÷)μΌλ‘λ§ μ΄λ£¨μ΄μ Έ μλ€.
μ°λ¦¬λ μμ μ μ¬μ΄μ μ°μ°μλ₯Ό νλμ© λ£μ΄μ, μμμ νλ λ§λ€ μ μλ€. μ΄λ, μ£Όμ΄μ§ μμ μμλ₯Ό λ°κΎΈλ©΄ μ λλ€.
μλ₯Ό λ€μ΄, 6κ°μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄μ΄ 1, 2, 3, 4, 5, 6μ΄κ³ , μ£Όμ΄μ§ μ°μ°μκ° λ§μ (+) 2κ°, λΊμ (-) 1κ°, κ³±μ (×) 1κ°, λλμ (÷) 1κ°μΈ κ²½μ°μλ μ΄ 60κ°μ§μ μμ λ§λ€ μ μλ€. μλ₯Ό λ€μ΄, μλμ κ°μ μμ λ§λ€ μ μλ€.
- 1+2+3-4×5÷6
- 1÷2+3+4-5×6
- 1+2÷3×4-5+6
- 1÷2×3-4+5+6
μμ κ³μ°μ μ°μ°μ μ°μ μμλ₯Ό 무μνκ³ μμμλΆν° μ§νν΄μΌ νλ€. λ, λλμ μ μ μ λλμ μΌλ‘ λͺ«λ§ μ·¨νλ€. μμλ₯Ό μμλ‘ λλ λλ C++14μ κΈ°μ€μ λ°λ₯Έλ€. μ¦, μμλ‘ λ°κΎΌ λ€ λͺ«μ μ·¨νκ³ , κ·Έ λͺ«μ μμλ‘ λ°κΎΌ κ²κ³Ό κ°λ€. μ΄μ λ°λΌμ, μμ μ 4κ°μ κ²°κ³Όλ₯Ό κ³μ°ν΄λ³΄λ©΄ μλμ κ°λ€.
- 1+2+3-4×5÷6 = 1
- 1÷2+3+4-5×6 = 12
- 1+2÷3×4-5+6 = 5
- 1÷2×3-4+5+6 = 7
Nκ°μ μμ N-1κ°μ μ°μ°μκ° μ£Όμ΄μ‘μ λ, λ§λ€ μ μλ μμ κ²°κ³Όκ° μ΅λμΈ κ²κ³Ό μ΅μμΈ κ²μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ κ°μ N(2 ≤ N ≤ 11)κ° μ£Όμ΄μ§λ€. λμ§Έ μ€μλ A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. (1 ≤ Ai ≤ 100) μ μ§Έ μ€μλ ν©μ΄ N-1μΈ 4κ°μ μ μκ° μ£Όμ΄μ§λλ°, μ°¨λ‘λλ‘ λ§μ (+)μ κ°μ, λΊμ (-)μ κ°μ, κ³±μ (×)μ κ°μ, λλμ (÷)μ κ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ§λ€ μ μλ μμ κ²°κ³Όμ μ΅λκ°μ, λμ§Έ μ€μλ μ΅μκ°μ μΆλ ₯νλ€. μ°μ°μλ₯Ό μ΄λ»κ² λΌμλ£μ΄λ νμ -10μ΅λ³΄λ€ ν¬κ±°λ κ°κ³ , 10μ΅λ³΄λ€ μκ±°λ κ°μ κ²°κ³Όκ° λμ€λ μ λ ₯λ§ μ£Όμ΄μ§λ€. λν, μμμλΆν° κ³μ°νμ λ, μ€κ°μ κ³μ°λλ μμ κ²°κ³Όλ νμ -10μ΅λ³΄λ€ ν¬κ±°λ κ°κ³ , 10μ΅λ³΄λ€ μκ±°λ κ°λ€.
λ¬Έμ ν΄κ²°
μ²μμ μμ μμλ₯Ό λ°κΎΈλ©΄ μλλ€λ κΈμ λͺ» μ½μ΄μ,, κ½€λ 볡μ‘ν μ½λλ₯Ό μ§λ€κ° μ΄κ² μ€λ²λΌκ³ ..? νλ©΄μ λ€μ μ½μ΄λ³΄λ μ£Όμ΄μ§ μμ μμλ₯Ό λ°κΎΈλ©΄ μλλ€.. λ°λ³΄λ€ κΈμ λλ°λ‘ μ½μ
κ·Έλ¬λ ν¨μ¬ κ°λ¨ν΄μ‘λ€. μμ μμλ μ ν΄μ Έμκ³ μ°μ°μλ§ λ°λλ©΄ λκΈ° λλ¬Έμ DFSλ‘ νμλ€.
μ°μ°μλ§λ€ caseλ₯Ό λλ μνν νμ μ¬κ·νΈμΆλ‘ νμν΄μ£Όμλ€.
#μ°μ°μ λΌμλ£κΈ°
N = int(input())
A = list(map(int, input().split()))
cal = list(map(int, input().split())) # +, -, x, / μμ
maximum, minimum = -1e9, 1e9
#μ΄ solutionμ κ³μ λ리면μ κ³μ° λλλ©΄ max, min 리ν΄νκ³ λ
def solution(cnt, sum, plus, minus, multiple, divide):
global maximum, minimum
if cnt == N:
maximum = max(sum, maximum)
minimum = min(sum, minimum)
return
if plus:
solution(cnt+1, sum+A[cnt], plus-1, minus, multiple, divide)
if minus:
solution(cnt+1, sum-A[cnt], plus, minus-1, multiple, divide)
if multiple:
solution(cnt+1, sum*A[cnt], plus, minus, multiple-1, divide)
if divide:
solution(cnt+1, int(sum/A[cnt]), plus, minus, multiple, divide-1)
solution(1, A[0], cal[0], cal[1], cal[2], cal[3] )
print(maximum)
print(minimum)
μ²μμ divide νλ λΆλΆμμ μκ°μμ΄
sum // A[cnt] λ₯Ό ν΄μ£Όμλλ° Testcase3λ²μμ λ°λ‘ μ€λ₯κ° λ°μνλ€. μ μ½μ¬νμ λλμ μ λν΄ μ‘°κ±΄μ΄ λ§μκΈ° λλ¬Έμ λ€μ μ΄ν΄λ³΄λ,
μ¦, μμλ‘ λ°κΎΌ λ€ λͺ«μ μ·¨νκ³ , κ·Έ λͺ«μ μμλ‘ λ°κΎΌ κ²κ³Ό κ°λ€.
λ‘ λμ΄μλ€. μ΄λ° κ²½μ°μ
μμ κ°μ μ°¨μ΄κ° μκΈ°κΈ° λλ¬Έμ int(sum/A[cnt]) λ‘ λ³κ²½ν΄μ£Όλ μ€λ₯ ν΄κ²° μ !
'Coding' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Baekjoon] 14889λ²: μ€ννΈμ λ§ν¬ (1) | 2023.03.10 |
---|---|
[Programmers] μ«μ λ¬Έμμ΄κ³Ό μλ¨μ΄ (0) | 2023.03.10 |
[Baekjoon] μν κ°λ (0) | 2023.03.09 |
[Programmers] λ κ° λ½μμ λνκΈ° (0) | 2023.03.09 |
[Programmers] 3μ§λ² λ€μ§κΈ° (0) | 2023.03.08 |