728x90

1759 암호 만들기

  • 문제
  • 해설
    • import sys
      
      target_length, C = [int(x) for x in sys.stdin.readline().split()]
      
      available_alphabets = sorted(sys.stdin.readline().split())
      
      
      def is_available(test_password):
          total_jaum = set('aeiou')
          if len(total_jaum & set(test_password)) >= 1 and len(set(test_password) - total_jaum) >= 2:
              return True
          else:
              return False
      
      
      def recursive_finder(test_password):
          # 불가능한 경우
          if len(test_password) > target_length:
              return None
      
          # 정답인 경우
          if len(test_password) == target_length and is_available(test_password):
              print(test_password)
      
          # 계속 호출인 경우
          if len(test_password) == 0:
              for i in available_alphabets:
                  recursive_finder(test_password + i)
      
          if 0 < len(test_password) < target_length:
              for i in available_alphabets[1 + available_alphabets.index(test_password[-1]):]:
                  recursive_finder(test_password + i)
      
      
      recursive_finder('')
  • 포인트
    • Bruteforce
    • Recursive function
728x90

'Algorithm-Problems > 백준' 카테고리의 다른 글

[백준][1934] 최소공배수  (0) 2022.05.08
[백준][1929] 소수 구하기  (0) 2022.05.05
[백준][1707] 이분 그래프  (0) 2022.02.09
[백준][1697] 숨바꼭질  (0) 2022.02.06
[백준][1476] 날짜 계산  (0) 2022.02.06

+ Recent posts