楽透の最高と最低ランキング[1級]Python


問題の説明


楽透6/45(以下「楽透」と略称する)は典型的な宝くじで、1~45の数字に6つ印刷して推測することができる.次は宝くじのランキングを決める方法です.

宝くじを購入したミンウは、当選番号の発表日を楽しみにしていた.しかし、敏宇の弟は宝くじに落書きをして、番号の一部が分からなくなった.当選番号が発表された後、敏宇は自分が購入した宝くじの当選の最高順位と最低順位を知りたいと思っています.
購入した6つの宝くじ番号が44、1、0、0、3125だとします.6つの当選番号がそれぞれ31、10、45、1、6、19の場合、当選可能な最高および最低の例は以下の通りである.

順序が
  • であれ、購入した宝くじに当選番号に該当する番号があれば、正解と認定されます.
  • では、2つの非表示の番号がそれぞれ10と6であると仮定すると、3位になります.
    他にも
  • の3位を作る方法があります.しかし、私たちはそれを2位以上にすることはできません.
  • は、11と7の2つの知らない番号を持っていると仮定し、5位になります.
    他にも
  • 5などを作る方法があります.しかし、彼を6位にすることは不可能だ.
  • パラメータは敏宇が購入した宝くじ番号を含む宝くじ、当選番号の宝くじである.このとき、可能な最高順位と最低順位を配列に順番に入れて戻ります.

    せいげんじょうけん

  • lottosは整数配列で、長さは6です.
  • lottosのすべての要素は45以下の整数です.
  • 0は識別不可能な数字を表す.
  • 0を除き、lottosには複数の数字は含まれていません.
  • lottosの要素が整列していない可能性があります.
  • win numsは長さ6の整数配列である.
  • win numsのすべての要素は45より大きい整数です.
  • win numsには同じ数字が複数含まれていません.
  • win numsの要素が整列していない可能性があります.
  • I/O例



    I/O例説明


    I/O例#1
    問題の例を以下に示します.
    I/O例#2
    下に読めない番号があれば、一等賞と六等賞に当たってもいいです.

    I/O例#3
    敏宇が購入した宝くじの番号と当選番号が一致したため、最高順位と最低順位が1位だった.

    コード#コード#

    def solution(lottos, win_nums):
        rank = [6, 6, 5, 4, 3, 2, 1] # 0개와 1개는 6등인 것을 잊지 말자. (문제 잘 읽어보자)
        cnt = 0
        for i in win_nums:
            if i in lottos:
                cnt += 1
        # cnt + lottos.count(0) => 최고 순위 번호 개수
        # cnt => 최저 순위 번호
        return [rank[cnt+lottos.count(0)], rank[cnt]]
    最初は、等級リストをdictデータ型として作成し、実装します.
    欠点:0.01 ms遅い
    ==>その後、単純リストに変更