[알고리즘/백준] 2529번 : 부등호(python)

유현민·2022년 4월 28일
0

알고리즘

목록 보기
150/253
post-custom-banner

0부터 시작하기 때문에 처음에 if문에 걸리는 수가 가장 작은 수이다. 그 다음에 계속해서 나오는 수들은 점점 커지기 때문에 계속 MAX를 갱신.

총 세가지 경우로 나누었는데...
1. 아무 숫자도 선택이 안되어 있는 경우
2. 숫자가 들어있고 부등호가 <
3. 부등호 >

아무 숫자도 없으면 한개를 넣었다.
부등호가 <이면 현재 들어간 숫자보다 더 큰 방향으로 for문을 돌린다.
'>' 이면 작은 방향으로 for문을 돌린다.

def recu(idx):
    global MIN
    global MAX
    if idx == n + 1:
        if MIN == 0:
            MIN = ''.join(map(str, s))
        else:
            MAX = ''.join(map(str, s))
        return

    if len(s) == 0:
        for i in range(10):
            s.append(i)
            recu(idx + 1)
            s.pop()

    elif a[idx - 1] == '<':
        for i in range(s[-1] + 1, 10):
            if i not in s:
                if chk(s[-1], i, a[idx - 1]):
                    s.append(i)
                    recu(idx + 1)
                    s.pop()

    else:
        for i in range(s[-1] + 1):
            if i not in s:
                if chk(s[-1], i, a[idx - 1]):
                    s.append(i)
                    recu(idx + 1)
                    s.pop()


def chk(i, j, k):
    if k == '<':
        return i < j
    else:
        return i > j


n = int(input())
a = input().split()
MIN = 0
MAX = 0
s = []
recu(0)
print(MAX)
print(MIN)
profile
smilegate
post-custom-banner

0개의 댓글