코드

import sys
sys.stdin = open("input.txt")

def check(a, b, sign):
    if sign == "<":
        return a < b
    else:
        return a > b

def solve(cnt):
    global max_value, min_value

    if cnt == n + 1:
        value = "".join(result)
        if int(min_value) > int(value):
            min_value = value
        if int(max_value) < int(value):
            max_value = value
        return

    for i in range(10):
        if not visited[i]:
            # 처음 들어가는 숫자일 경우 그리고 부등호 체크르 or을 사용하여 한줄에 쓰기
            if len(result) == 0 or check(int(result[-1]), i, arr[cnt - 1]):
                visited[i] = True
                result.append(str(i))
                solve(cnt + 1)
                visited[i] = False
                result.pop()


n = int(input())
arr = list(input().split())
min_value = "9999999999"
max_value = "-1"
result = []
visited = [False] * 10
solve(0)
print(max_value)
print(min_value)

:star:풀이

len(result) == 0 or check(int(result[-1]), i, arr[cnt - 1]) 이부분은 처음에는 바로 생각하지 못하였다.

처음에는 cnt == 0인 경우와 아닌 경우로 나누어서 풀었는데 코드가 너무 지저분해 보여서

맞은 유저들의 풀이들을 보다가 or를 사용한게 정말 인상적이여서 나도 적용해보았다. (lunarstella님 코드 참고)

아직 많이 부족하다 ㅠㅠ

댓글남기기