๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] [์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ] 14888๋ฒˆ_์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ

Dbswnstjd 2023. 2. 13. 02:19

๋ฌธ์ œ

https://www.acmicpc.net/problem/14888

 

14888๋ฒˆ: ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(2 ≤ N ≤ 11)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A1, A2, ..., AN์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ai ≤ 100) ์…‹์งธ ์ค„์—๋Š” ํ•ฉ์ด N-1์ธ 4๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ฐจ๋ก€๋Œ€๋กœ ๋ง์…ˆ(+)์˜ ๊ฐœ์ˆ˜, ๋บ„์…ˆ(-)์˜ ๊ฐœ์ˆ˜, 

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 14888๋ฒˆ ๋ฌธ์ œ - ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ
n = int(input())
number = list(map(int, input().split()))
add, sub, mul, div = map(int, input().split());
max_result = - int(1e9)
min_result = int(1e9)

def dfs(add, sub, mul, div, sum_value, idx):
    global max_result, min_result
    if idx == n:
        max_result = max(max_result, sum_value)
        min_result = min(min_result, sum_value)
        return
    if add:
        dfs(add-1, sub, mul, div, sum_value + number[idx], idx + 1)
    if sub:
        dfs(add, sub-1, mul, div, sum_value - number[idx], idx + 1)
    if mul:
        dfs(add, sub, mul-1, div, sum_value * number[idx], idx + 1)
    if div:
        dfs(add, sub, mul, div-1, int(sum_value / number[idx]), idx + 1)
        
dfs(add, sub, mul, div, number[0], 1)
print(max_result)
print(min_result)

DFS ๋ฅผ ์ด์šฉํ•œ ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ