[1]
랭킹 리스트에 점수가 존재하지 않는다면, 새 점수의 랭킹은 1이 된다.
[2]
반면 랭킹 리스트에 점수가 존재한다면, 새 점수의 랭킹을 찾아야 한다.
이때, 새 점수의 랭킹은 새 점수의 인덱스 값에 1을 더한 값이다.
여기서, 랭킹 리스트가 꽉 찬 경우(n == p)와 그렇지 않은 경우로 나누어 생각할 수 있다.
[2-1]
랭킹 리스트가 꽉 찼다면, 어떤 점수는 반드시 밀려나게 되고, 랭킹 리스트에서 제외된다.
새 점수가 내림차순 정렬된 랭킹 리스트의 최솟값보다 작거나 같다면, 새 점수는 랭킹 리스트에서 제외되므로 -1을 출력해야 한다.
그렇지 않다면, 새 점수의 인덱스에 1을 더한 값이 랭킹이 된다.
[2-2]
랭킹 리스트에 자리가 남아 있다면, 새 점수의 인덱스에 1을 더한 값이 랭킹이 된다.
import sys
n, new_point, p = map(int, sys.stdin.readline().split())
# 1. 랭킹 리스트가 존재하는 경우
if n > 0:
ranking_list = list(map(int, sys.stdin.readline().split()))
new_point_index = n
for i in range(n):
if new_point >= ranking_list[i]:
new_point_index = i
break
# 1-1. 랭킹 리스트에 자리가 없는 경우
if n == p:
if new_point <= ranking_list[-1]:
print(-1)
else:
print(new_point_index + 1)
# 1-2. 랭킹 리스트에 자리가 있는 경우
else:
print(new_point_index + 1)
# 2. 랭킹 리스트가 존재하지 않는 경우
else:
print(1)