import numpy as np
import hashlib
# 추첨 인원수
winner_num = 5
# BOJ 연습란을 텍스트로 긁어오면 됩니다 (랭킹, 아이디, A, B, C, ... 맨 윗줄 제외하고)
info = """
1 glnthd02 1 / 3357 1 / 3817 1 / 3823 1 / 3903 3 / 4238 6 / 4393 4 / 7200 7 / 30731
2 bwgreen 1 / 201 1 / 208 2 / 233 2 / 8508 4 / 1240 4 / 4082 0 / -- 6 / 14472
3 rlawoaks 1 / 184 5 / 313 1 / 241 5 / 3143 6 / 1591 0 / -- 3 / -- 5 / 5472
4 hms0510 1 / 246 1 / 267 1 / 284 1 / 2986 3 / 2454 0 / -- 0 / -- 5 / 6237
5 chipi2302 3 / 4598 1 / 3029 1 / 3811 1 / 3857 0 / -- 0 / -- 0 / -- 4 / 15295
6 likescape 1 / 198 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 1 / 198
7 mica167 1 / 209 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 1 / 209
8 choiseoo 4 / 2480 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 1 / 2480
9 aerae 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 2 / 4102 1 / 4102
10 harrysooin 1 / 5388 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 0 / -- 1 / 5388
"""
info = info.splitlines(keepends = True)
if info[0] == "\n": info.pop(0)
# 랜덤 시드
mod = 4294967296 # 2^32
seed_string = "250929"
random_seed = int.from_bytes(hashlib.sha256(seed_string.encode()).digest(), 'big') % mod
np.random.seed(random_seed)
participants = {}
for participant in info:
participant = participant.split('\t')
user = participant[1]
corrects = int(participant[-1].split(' / ')[0])
if user in participants:
participants[user] = max(participants[user], corrects + 3)
else: participants[user] = corrects + 3
# 추첨 명단 제외 리스트
except_list = ['aerae']
for except_user in except_list:
try:
participants.pop(except_user)
except:
pass
# 추첨 확률 설정
winner_percent = [0] * len(participants)
correct_problems_sum = sum(participants.values())
for i, corrects in enumerate(list(participants.values())):
winner_percent[i] = corrects / correct_problems_sum
print(f'랜덤 시드: {seed_string}')
print(f'{len(participants)}명 {list(participants.keys())}')
# print(f'맞은 문제 개수: {list(participants.values())}')
# print(f'확률: {winner_percent}')
# 당첨자
winner = np.random.choice(list(participants.keys()), winner_num, replace = False, p = winner_percent) \
if winner_num < len(participants) else list(participants.keys())
winner.sort()
print(f'당첨자: {winner}')# your code goes here