[programmers/CodingTest/Python]宝くじの最高と最低ランキング
4566 ワード
問題の説明
楽透6/45(以下「楽透」と略称する)は典型的な宝くじで、1~45の数字に6つ印刷して推測することができる.次は宝くじのランキングを決める方法です.순위 당첨 내용
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6(낙첨) 그 외
宝くじを購入したミンウは、当選番号の発表日を楽しみにしていた.しかし、敏宇の弟は宝くじに落書きをして、番号の一部が分からなくなった.当選番号が発表された後、敏宇は自分が購入した宝くじの当選の最高順位と最低順位を知りたいと思っています.
購入した6つの宝くじ番号が44、1、0、0、3125だとします.6つの当選番号がそれぞれ31、10、45、1、6、19の場合、当選可能な最高および最低の例は以下の通りである.당첨 번호 31 10 45 1 6 19 결과
최고 순위 번호 31 0→10 44 1 0→6 25 4개 번호 일치, 3등
최저 순위 번호 31 0→11 44 1 0→7 25 2개 번호 일치, 5등
順序が
순위 당첨 내용
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6(낙첨) 그 외
당첨 번호 31 10 45 1 6 19 결과
최고 순위 번호 31 0→10 44 1 0→6 25 4개 번호 일치, 3등
최저 순위 번호 31 0→11 44 1 0→7 25 2개 번호 일치, 5등
->3位を作る方法は他にもあります.しかし、私たちはそれを2位以上にすることはできません.
->5位を作る方法は他にもあります.しかし、彼を6位にすることは不可能だ.
せいげんじょうけん
->0は認識できない数字を表します.
->0以外の数字はlottosで2つを超えません.
->lottosの要素が整列していない可能性があります.
->win numsには2つ以上の同じ数字は含まれていません.
->win numsの要素が整列していない可能性があります.
I/O例
lottos win_nums result
[44, 1, 0, 0, 31, 25] [31, 10, 45, 1, 6, 19] [3, 5]
[0, 0, 0, 0, 0, 0] [38, 19, 20, 40, 15, 25] [1, 6]
[45, 4, 35, 20, 3, 9] [20, 9, 3, 45, 4, 35] [1, 1]
I/O例説明
I/O例#1
問題の例を以下に示します.
I/O例#2
下に読めない番号があれば、一等賞と六等賞に当たってもいいです.
당첨 번호 38 19 20 40 15 25 결과
최고 순위 번호 0→38 0→19 0→20 0→40 0→15 0→25 6개 번호 일치, 1등
최저 순위 번호 0→21 0→22 0→23 0→24 0→26 0→27 0개 번호 일치, 6등
I/O例#3敏宇が購入した宝くじの番号と当選番号が一致したため、最高順位と最低順位が1位だった.
実際に使われている宝くじのランキング方式とは少し違いますが、本問題では指紋の説明に従って宝くじのランキングを確定します.
方法
問題で定義した順序は7-(正しい番号)です.ここでは0を最良,最悪の場合に分けて,正しい番号の個数,0の個数を求めて解決する.
solution.py def solution(lottos, win_nums):
answer=[]
cnt=0
zero=lottos.count(0)
for i in lottos:
if i in win_nums:
cnt+=1
best=7-(cnt+zero)
worst=7-cnt
if cnt<2:
worst=6
if zero==0:
best=6
answer.append(best)
answer.append(worst)
return answer
Reference
この問題について([programmers/CodingTest/Python]宝くじの最高と最低ランキング), 我々は、より多くの情報をここで見つけました
https://velog.io/@xx0hn/Programmers-CodingTest-Python-로또의-최고-순위와-최저-순위
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def solution(lottos, win_nums):
answer=[]
cnt=0
zero=lottos.count(0)
for i in lottos:
if i in win_nums:
cnt+=1
best=7-(cnt+zero)
worst=7-cnt
if cnt<2:
worst=6
if zero==0:
best=6
answer.append(best)
answer.append(worst)
return answer
Reference
この問題について([programmers/CodingTest/Python]宝くじの最高と最低ランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@xx0hn/Programmers-CodingTest-Python-로또의-최고-순위와-최저-순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol