[실버2] 2529번 : 부등호

Quesuemon·2022년 6월 1일
0

코딩테스트 준비

목록 보기
105/111

🛠 문제

https://www.acmicpc.net/problem/2529


👩🏻‍💻 해결 방법

permutation을 사용해서 가능한 수의 전체 경우의 수를 구해준 뒤 falg를 사용해 가능한 숫자들만 result에 추가하여 구할 수 있다

소스 코드

import itertools

n = int(input())
b = list(input().split(' '))

result = []

for p in itertools.permutations([0,1,2,3,4,5,6,7,8,9], n+1):
  flag = True

  for i in range(len(b)):
    if b[i] == '<':
      if p[i] < p[i+1]:
        continue
      else:
        flag = False
        break
    else:
      if p[i] > p[i+1]:
        continue
      else:
        flag = False
        break

  if flag:
    result.append(p)

print(''.join(map(str, list(max(result)))))
print(''.join(map(str, list(min(result)))))

💡 다른 사람의 풀이

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)

0개의 댓글

관련 채용 정보