문제
알고리즘
- 랭킹 리스트에 점수가 있는지 확인하고 점수가 없다면 무조건 1등이므로 1을 출력한다.
- 랭킹 리스트에 점수가 있다면 랭킹 리스트에 새로운 점수를 넣고 새로운 점수의 등수를 확인한다.
- 등수가 랭킹의 올라갈 수 있는 등수보다 크다면 -1을 출력한다.
- 랭킹 리스트의 길이와 랭킹의 올라갈 수 있는 등수의 길이가 같고 마지막 등수가 새로운 점수의 등수와 같다면 즉, 새로운 점수가 마지막 점수와 동점이라면 -1을 출력한다.
- 그게 아니라면 랭킹 리스트에 새로운 점수의 등수를 출력한다.
코드
import sys
n, next_point, p = map(int, sys.stdin.readline().split())
# 랭킹 리스트에 점수가 있는지 확인
if n:
m = sorted(list(map(int, sys.stdin.readline().split())) + [next_point], reverse=True) # 랭킹 리스트 + 새로운 점수
answer = m.index(next_point) + 1 # 랭킹 리스트에 새로운 점수의 등수
# 등수가 랭킹의 올라갈 수 있는 둥수보다 크다면 -1 출력
if answer > p:
print(-1)
else:
# 랭킹 리스트의 길이와 랭킹의 올라갈 수 있는 등수의 길이가 같고 마지막 등수가 새로운 점수의 등수와 같다면
# 즉, 새로운 점수가 마지막 점수와 동점이라면 -1 출력
if n == p and next_point == m[-1]:
print(-1)
# 위 경우가 아니라면 랭킹 리스트에 새로운 점수의 등수를 출력
else:
print(answer)
# 랭킹 리스트에 점수가 없다면 무조건 1등!
else:
print(1)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2960번(자바): 에라토스테네스의 체 (0) | 2022.08.14 |
---|---|
[baekjoon] 백준 11723번(자바): 집합 (0) | 2022.08.13 |
[baekjoon] 백준 1063번(파이썬): 킹 (0) | 2022.08.09 |
[baekjoon] 백준 1929번(파이썬): 소수 구하기 (0) | 2022.08.07 |
[baekjoon] 백준 7568번(파이썬): 덩치 (0) | 2022.07.21 |