Programmers-小数点を検索(Python)



問題の説明


一桁と書かれた紙片が散らばっている.ばらばらの紙切れを貼って、いくつかの小数点を作ることができることを見たいです.
各紙片の数字の文字シリアル番号を指定すると、紙片で作成できるいくつかの数を返すための解法関数を完了します.

せいげんじょうけん

  • numbersは、長さが1または7未満の文字列です.
  • numberは0から9の数字で構成されています.
  • 「013」とは、1、3の数字の紙片が散らばっていることを意味する.
  • I/O例


    numbersreturn"17"3"011"2

    I/O例説明


    例1
    [1,7]小数[7,17,71]を作成できます.
    例2
    [0,1,1]は小数点を作成することができる[1101].
  • 111と011の数字は同じです.
  • ハーモニー

    from itertools import permutations
    import math
    
    def check(n):
        k = math.sqrt(n)
    
        if n < 2: 
            return False
    
        for i in range(2, int(k)+1):
            if n % i == 0:
                return False
        return True
    
    def solution(numbers):
        answer = []
        for k in range(1, len(numbers)+1):
            perlist = list(map(''.join, permutations(list(numbers), k)))
            for i in list(set(perlist)):
                if check(int(i)):
                    answer.append(int(i))
    
        answer = len(set(answer))
    
        return answer
    
    numbers = "17"
    
    print(solution(numbers)) # 결과 예 : 3 
    解法
    1)checkという関数を作成することで小数を判定する.ここで数学sqrtを用いたのは,平方数が小数ではないため,それによって判定される.
    2)配列によりすべての場合の数字を作成し判定する.しかし,ここで重複する数が発生し,setに早めに減少すると,速度が大幅に速くなる.
    3)答えにすべての小数点を入れて長さを印刷すると正解が得られます.

    📝 結果



    😃 に感銘を与える

  • が並んでいるとは知りませんでした.これを知ってくれて感謝します.
  • 👍 Irishのすべてのコードを表示


    -> Irish Github