[백준 2529] 부등호

Junyoung Park·2022년 7월 5일
0

코딩테스트

목록 보기
484/631
post-thumbnail

1. 문제 설명

부등호

2. 문제 분석

순열로 풀었더니 메모리 초과가 났다. check라는 불리언 배열을 통해 백트래킹으로 0~9까지의 수의 순열을 재귀적으로 만들어서 접근했다.

3. 나의 풀이

import sys
from itertools import permutations

n = int(sys.stdin.readline().rstrip())
operators = list(sys.stdin.readline().rstrip().split())
check = [False for _ in range(10)]
max_num, min_num = "", ""

def get_num(cnt, num):
    global max_num
    global min_num

    if cnt == n+1:
        if min_num == "":
            min_num = num
        max_num = num
        return

    for i in range(10):
        if not check[i]:
            cur_num, next_num = num[-1], str(i)
            operator = operators[cnt-1]
            if (operator == "<" and cur_num < next_num) or (operator == ">" and cur_num > next_num):
                check[i] = True
                get_num(cnt+1, num + str(i))
                check[i] = False

for i in range(10):
    check[i] = True
    get_num(1, str(i))
    check[i] = False

print(max_num)
print(min_num)
profile
JUST DO IT

0개의 댓글