For Programmer

백준 2529번 파이썬 문제풀이(브루트 포스 - 부등호) 본문

코팅테스트/백준 문제 모음

백준 2529번 파이썬 문제풀이(브루트 포스 - 부등호)

유지광이 2021. 10. 23. 16:10
728x90

코드

k = int(input())

sign = list(map(str, input().split()))
visitied = [False] * 11
minResult = ""
maxResult = ""


def possible(i, j, sign):
    if sign == '>':
        return i > j
    else:
        return i < j


def solve(depth, s):
    global minResult, maxResult

    if depth == k + 1:
        if len(minResult) == 0:
            minResult = s
        else:
            maxResult = s
        return

    for i in range(10):
        if not visitied[i]:
            if depth == 0 or possible(s[len(s) - 1], str(i), sign[depth - 1]):
                visitied[i] = True
                solve(depth + 1, s + str(i))
                visitied[i] = False


solve(0, "")
print(maxResult)
print(minResult)

-> 아무리 생각해도 재귀로 이런 코드를 처음에 바로 생각해내는것이 쉽지않다.... 대부분 재귀로 DFS문제를 풀면 위와 같은 식으로 푸는 대도 해당 코드를 생각하지 못하는 내가 멍청하다는 생각이 든다... 하지만 포기할 수 없다. 반복만이 살길이다.. 

728x90
Comments