๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐฑ์ค€ 14501 & ๋ฐฑ์ค€ 13023 ๋ณธ๋ฌธ

  • ๋ฐฑ์ค€ 13023 ABCDE
#๋ฐฑ์ค€ 13023 ABCDE

import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)

n, m = map(int, input().split())
visited = [False] * n
graph = [[] for _ in range(n)]
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

flag = False

def dfs(depth, now):
    global flag
    visited[now] = True
    if depth == 4:
        print(1)
        exit()

    for next in graph[now]:
        if not visited[next]:
            dfs(depth + 1, next)
            visited[next] = False #return ๋˜๋ฉด ๋‹ค์‹œ ๋ฐฉ๋ฌธ ํ‘œ์‹œ ํ•ด์ œ

for i in range(n):
    dfs(0, i)
    visited[i] = False # return ๋˜๋ฉด ํ˜„์žฌ ์‹œ์ž‘๊ฐ’ ๋ฐฉ๋ฌธ ํ‘œ์‹œ ํ•ด์ œ

print(0)

 

  • ๋ฐฑ์ค€ 14501 ํ‡ด์‚ฌ
# ๋ฐฑ์ค€ 14501 ํ‡ด์‚ฌ

n = int(input())
schedule = []
for _ in range(n):
    t, p = map(int, input().split())
    schedule.append([t,p])

def dfs(day, pay):
    global max_pay
    if day == n:
        max_pay = max(pay,max_pay)
        return

    t = schedule[day][0] #ํ˜„์žฌ ๋‚ ์งœ์˜ ๋‹ค์Œ ์ƒ๋‹ด ์†Œ์š”์ผ
    p = schedule[day][1] #ํ˜„์žฌ ๋‚ ์งœ์˜ ๋‹ค์Œ ์ƒ๋‹ด ํŽ˜์ด
    if day + t <= n:
        dfs(day + t, pay+p)
    dfs(day+1, pay)

max_pay = 0
for i in range(n):
    dfs(i, 0)

print(max_pay)