반응형
문제
先日,JOI 大学情報学科で入学試験が行われた.試験は 100 点満点であり,n 人の生徒が受験 した.JOI 大学では,合格最低点を決定するために,試験結果を元に各生徒に順位をつけるこ とにした.
n 人の生徒の得点が与えられたとき,各生徒の順位を求めるプログラムを作成せよ.ただし, 同じ得点の生徒がいる可能性があることに注意せよ.
입력
入力の 1 行目には,生徒の人数 n (1 ≤ n ≤ 100000) が書かれて いる.続く n 行は生徒の得点を表す.i + 1 (1 ≤ i ≤ n) 行目には受験番号 i の生徒の得点 si (0 ≤ si ≤ 100) が書かれている.
출력
出力は,標準出力に行うこと.出力は n 行からなる.i 行目 (1 5 i 5 n) に受験番号 i の生徒の順位を出力せよ.
풀이
n = int(input())
score = []
for i in range(n):
m = int(input())
score.append([i, m, 0])
tmp = 0
idx = 0
cnt = 0
sscore = sorted(score, key=lambda x: x[1], reverse=True)
for j in range(n):
flag = 1
if tmp == sscore[j][1]:
sscore[j][2] = idx
flag = 0
cnt += 1
if flag:
idx = cnt
sscore[j][2] = idx
tmp = sscore[j][1]
ans = sorted(sscore, key=lambda x: x[0])
for a in ans:
print(a[2])
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver III #13305 주유소 (0) | 2023.05.29 |
---|---|
[백준/Python] Silver V #1439 뒤집기 (0) | 2023.05.29 |
[백준/Python] Bronze IV #11365 !밀비 급일 (0) | 2023.05.28 |
[백준/Python] Bronze IV #10808 알파벳 개수 (0) | 2023.05.28 |
[백준/Python] Bronze II #2587 대표값2 (0) | 2023.05.28 |
Comment