> 백엔드 개발 > 파이썬 튜토리얼 > 주간 챌린지의 아름다운 배열 작업을 위한 나의 Python 언어 솔루션

주간 챌린지의 아름다운 배열 작업을 위한 나의 Python 언어 솔루션

Barbara Streisand
풀어 주다: 2024-12-27 02:40:10
원래의
181명이 탐색했습니다.

My Python Language Solution to Task Beautiful Arrangement from The Weekly Challenge

1. 소개

Mohammad S. Anwar가 주최한 주간 챌린지는 개발자들이 두 가지 과제를 해결하여 경쟁하는 우호적인 경쟁입니다. 학습, 공유, 즐거움을 통해 모든 언어와 수준의 개발자의 참여를 장려합니다.

과제 1: 주간 챌린지의 아름다운 배열에서는 개발자가 양의 정수에서 생성된 모든 순열 중에서 아름답게 배열된 순열의 수를 찾도록 초대합니다.

이번 포스팅에서는 과제 1: 아름다운 정리에 대한 논의와 해결책을 제시하고 간략한 결론을 마치겠습니다.

주간 챌린지 300 마감일은 2024년 12월 23일 일요일 23:59(영국 시간)입니다. 편견을 피하려면 대회 후에 이 게시물을 읽어보세요.

2. 작업 1: 아름다운 배열

양의 정수 $int가 주어졌습니다.

$int에서 구성할 수 있는 아름다운 배열의 수를 반환하는 스크립트를 작성하세요.

인덱스가 1인 n 정수의 순열은 모든 i(1

  1. 순열[i]는 i로 나눌 수 있습니다.
  2. i는 순열로 나눌 수 있습니다[i]

주간 챌린지 300, 과제 1: 아름다운 정리

예 1과 2는 주어진 입력에서 예상되는 출력을 나타냅니다.

실시예 1

Input: $n = 2
Output: 2
로그인 후 복사

n = 2이고 (1

순열 (1, 2)는 모든 요소가 첫 번째 조건과 일치하므로 아름다운 배열입니다.

  • i = 1에서 순열[1] = 1은 하나가 1로 나누어지기 때문에 첫 번째 조건을 충족합니다.
  • i = 2에서 순열[2] = 2는 2가 2로 나누어지므로 첫 번째 조건을 충족합니다.

순열(2, 1)도 모든 요소가 첫 번째 또는 두 번째 조건과 일치하므로 아름다운 배열입니다.

  • i = 1에서 순열[1] = 2는 2가 1로 나누어지므로 첫 번째 조건을 충족합니다.
  • i = 2에서 순열[2] = 1은 2가 1로 나누어지기 때문에 두 번째 조건을 충족합니다.

실시예 2

Input: $n = 1
Output: 1
로그인 후 복사

실시예 3

Input: $n = 10
Output: 700
로그인 후 복사

3. 과제 1에 대한 나의 해결책

from itertools import permutations

def generate_permutations(n)
    iterable = list(range(1, n + 1))
    return permutations(iterable)

def count_beautiful_arrangements(perms):
    num_beautiful_arr = 0
    for perm in perms:
        is_beautiful_arr = True
        for value_index, value in enumerate(perm):
            if value % (value_index + 1) == 0:
                continue
            elif (value_index + 1) % value == 0:
                continue
            else:
                is_beautiful_arr = False
                break
        if is_beautiful_arr == True:
            num_beautiful_arr += 1
    return num_beautiful_arr
로그인 후 복사

저의 우아하지 않고 정교하지 않은 솔루션은 generate_permutations와 count_beautiful_arrangements라는 두 가지 함수를 활용합니다.

generate_permutations는 매개변수 n에 대해 1

  • iterable = list(range(1, n 1)) 은 1
  • itertools 모듈에서 가져온 permutations(iterable)는 iterable의 모든 순열을 생성합니다.

count_beautiful_permutations는 permutations iterable perms 매개변수에 대해 아름다운 배열 조건과 일치하는 perms의 총 순열 수를 반환합니다.

  • perm in의 외부 루프는... 각 순열을 통해 반복됩니다.
  • 파마는 아름다운 배열이라는 가정(is_beautiful_arr = True)에서 시작됩니다.
    • value_index, value in...의 내부 루프는 perm의 각 요소가 조건 1 또는 조건 2와 일치하는지 확인합니다.
      • 모든 요소가 두 조건 중 하나와 일치하면 파마는 아름다운 배열로 간주됩니다.
      • 그렇지 않고 조건 1이나 조건 2와 일치하지 않는 요소가 있으면 is_beautiful_arr가 False로 설정되고 루프가 일찍 중단되며 perm은 아름다운 배열로 간주되지 않습니다.

4. 결론

이번 게시물에서는 작업 1: 아름다운 배열에 대해 논의하고 해결책을 제시했습니다. 내 '우아하지 않고 정교하지 않은' 솔루션은 효과가 있지만 개선의 여지가 상당히 많습니다.

위 내용은 주간 챌린지의 아름다운 배열 작업을 위한 나의 Python 언어 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿