[백준] 2529번 부등호

거북이·2023년 10월 17일
0

백준[실버1]

목록 보기
65/67
post-thumbnail

💡문제접근

  • 0~9까지의 방문 배열 만들기(중복 제외) + 부등호를 판별할 수 있는 함수를 만들기

💡코드(메모리 : 32140KB, 시간 : 148ms)

import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)

k = int(input())                                # 숫자
op = list(map(str, input().strip().split()))    # 부등호

visited = [False] * 10  # 0~9까지의 숫자
answer = []             # 배열

def check(a, b, op):
    if a > b and op == ">":
        return True
    elif a < b and op == "<":
        return True
    else:
        return False

def recursive(cnt, num):
    global answer
    if cnt == k+1:
        answer.append(num)
        return
    for i in range(10):
        if visited[i]:
            continue
        # cnt == 0 → 맨 처음 숫자를 넣을 때 인덱스에러가 발생하는 것을 방지하는 차원에서
        if cnt == 0 or check(int(num[cnt-1]), int(i), op[cnt-1]):
            visited[i] = True
            recursive(cnt+1, num+str(i))
            visited[i] = False

recursive(0, '')
answer.sort(reverse=True)
print(answer[0])
print(answer[-1])

💡소요시간 : 41m

0개의 댓글