Programmers_Lv.1楽透の最高と最低ランキング

8393 ワード

質問リンク

問題の説明


  • 楽透6/45(以下「楽透」と略称する)は典型的な宝くじで、1~45の数字に6つ印刷して推測することができる.次は宝くじのランキングを決める方法です.
    ランキング説明16番全て一致25番一致34番一致43番一致52番一致6個(落札)それ以外

  • 宝くじを購入したミンウは、当選番号の発表日を楽しみにしていた.しかし、敏宇の弟は宝くじに落書きをして、番号の一部が分からなくなった.

  • 当選番号が発表された後、敏宇は自分が購入した宝くじの当選の最高順位と最低順位を知りたいと思っています.

  • 購入した6つの宝くじ番号が44、1、0、0、3125だとします.6つの当選番号がそれぞれ31、10、45、1、6、19の場合、当選可能な最高および最低の例は以下の通りである.
    当選番号3110451619結果最高順位310→104110→6254番一致、3位最低順位310→114110→7252番一致、5位

  • 順序のいかんにかかわらず、購入した宝くじに当選番号に該当する番号があれば、正解と認定されます.

  • 10と6の2つの知らない番号を持っていると、3位になります.
    他にも
  • の3位を作る方法があります.しかし、私たちはそれを2位以上にすることはできません.

  • 11と7の2つの知らない番号があるとします.5位になります.
    他にも
  • 5などを作る方法があります.しかし、彼を6位にすることは不可能だ.

  • パラメータは敏宇が購入した宝くじ番号を含む宝くじ、当選番号の宝くじである.このとき、可能な最高順位と最低順位を配列に順番に入れて戻ります.
  • 自分の質問に答える

    # 예시 데이터
    lottos = [44,1,0,0,31,25]
    win_nums = [31,10,45,1,6,19]
    
    matchNum = 0 # 일치한 숫자 개수
    zeroCount = 0 # 숫자 0의 개수
    変数説明フォーマットmatchNumで購入した宝くじ番号のうち、当選番号に一致する整数intzeroCountで購入した宝くじ番号に表示されない番号(0)個int
    for lot_num in lottos:
        if lot_num in win_nums: # lottos의 숫자를 순서대로 불러내어 당첨 번호 리스트에 포함되는지 확인
            matchNum += 1 # 일치하면 matchNum +1
        elif lot_num == 0: # lottos의 숫자가 0이라면
            zeroCount += 1 # zeroCount +1
  • で購入した宝くじの番号を順番に入れ、当選番号リストの番号と比較する
  • .
  • に一致する場合、matchnum変数+1.
  • 番号が0の場合、ゼロCount変数を1つ追加します.
  • maxWin = matchNum + zeroCount # 일치한 개수와 0의 개수를 더함
    変数説明フォーマットmaxWinで購入した宝くじ番号のうち、当選番号に一致する数字の個数と0の整数int
  • で最も多く何個の番号に対して買うことができる宝くじの番号の中で求めて、当選番号と一致する個数と0の個数をプラスします.
  • if zeroCount == 6: #모든 숫자가 0일 경우 대비
        matchNum = 1
        maxWin = 6
    elif matchNum == 0: # 모든 숫자가 일치하지 않을 경우 (0이 없음)
        matchNum = 1
        maxWin = 1

  • すべての数字が0(すべての数字が見えない場合)の場合、matchnumは1、maxWinは6です.
    これは
  • matchnumが実際に示す宝くじ番号の最低個数のためである.
  • これを
  • 0にしないで、1にしたのは、後の答えを求めるためだ.

  • すべての数字が0でなく、当選番号と一致しない場合、matchnumは1、maxWinは1です.
  • answer = [7-maxWin, 7-matchNum] # 7에서 maxWin과 matchNum 을 빼 순위 계산
  • 7からmaxWin値を減算し、最高順位を求める.
  • 7からmatchnum値を減算し、最下位を求める.
  • answer
    [3, 5]
  • 正解が出てきました.
  • 型を解く


    これは
  • の他の開発者の解答方法です.
  • rank = [6,6,5,4,3,2,1] # 순서대로 순위를 미리 정의함
  • の優先順位でリストを定義します.
  • cnt_0 = lottos.count(0) # lottos에서 0의 개수를 셈
  • .count関数を使用して購入した宝くじ番号から0個数えます.
  • ans = 0
    定義
  • ans変数
  • for x in win_nums: #정답 번호를 1개씩 불러와
        if x in lottos: # 구매한 로또에 포함되어 있는 숫자라면 ans +1
            ans += 1
  • 正しい答え番号を入力して、購入した宝くじ番号にこの番号が含まれていることを確認してください.
  • が含まれている場合、ans変数+1
  • print(rank[cnt_0 + ans], rank[ans])
    # 최대 순위 : 0의 개수와 정답 개수를 합쳐 해당하는 rank의 index 참조
    # 최소 순위 : 맞춘 정답의 개수에 해당하는 rank의 index 참조
    
  • 0の個数と正解の個数の和をインデックスとしてrankリストの対応するインデックスの値
  • を決定する.
  • ansの値をインデックスとして使用してrankリストのインデックスの値
  • を決定する.
        3 5
  • 正解が出てきました.
  • に感銘を与える

  • ルールに基づいて、すべて0の場合とすべての当てがない場合を解決するために、私の答えは無言でかわいいです.
  • rankをリストとして定義し,インデックス値でソートする方法が斬新で学習に値する点が大きい.
  • をもっと深く考えてみましょう.