Python3
문제
https://www.acmicpc.net/problem/1205
키워드
문제 풀이
문제 요구사항
새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램
- 랭킹 리스트에 올라 갈 수 있는 점수의 개수 P가 주어진다.
- 리스트에 있는 점수 N개가 비오름차순으로 주어지고, 태수의 새로운 점수가 주어진다.
- 만약 점수가 랭킹 리스트에 올라갈 수 없을 정도로 낮다면 -1을 출력한다.
- 랭킹 리스트가 꽉 차있을 때, 새 점수가 이전 점수보다 더 좋을 때만 점수가 바뀐다.
변수 및 함수 설명
- n : 리스트에 있는 점수 개수
0보다 크거나 같고, P보다 작거나 같은 정수
- score : 태수의 새로운 점수
- p : 랭킹 리스트에 올라 갈 수 있는 점수의 개수
10보다 크거나 같고, 50보다 작거나 같은 정수
- rank : 랭킹 리스트에서 몇 등 하는지 나타내는 변수
- arr : 랭킹 리스트 점수
2,000,000,000보다 작거나 같은 자연수 또는 0
풀이
- n이 0이라면 rank는 1이다.
- n이 0보다 크다면 랭킹 리스트를 입력받는다
- n과 p가 같고, 랭킹 리스트의 마지막 점수가 새로운 점수보다 크거나 같으면 랭킹에 올라갈 수 없다.
- 랭킹에 올라갈 수 있다면, 두 가지 경우가 있다.
- 반복문을 다 돌아도 점수가 들어갈 수 없으면 맨 뒤에 위치하게 될 것이다.
- 새로운 점수가 랭킹 리스트 점수보다 크거나 같을 때, rank에 i + 1 값을 넣고 반복문을 종료한다.
최종 코드
n, score, p = map(int, input().split())
rank = 1
if n > 0:
arr = list(map(int, input().split()))
if n == p and arr[-1] >= score:
print(-1)
exit()
else:
rank = n + 1
for i in range(n):
if score >= arr[i]:
rank = i + 1
break
print(rank)
피드백
하나씩 어긋나서 맞추는 것이 조금 까다로웠다.