- 태수의 새로운 점수를 반복문으로 받아온 점수와 비교했을 때 태수의 새로운 점수가 더 높은 시점에 새로운 점수를
insert
해주었다.- 새 점수가 위치한 인덱스를 저장하고 이 값이 만약 랭킹 리스트에 들어갈 점수의 개수 P보다 크다면 들어갈 수 없으므로 -1을 출력한다. 만약 랭킹 리스트가 꽉 차있을 때, 새 점수가 랭킹 리스트의 마지막 점수와 같다면 점수가 바뀌지 않으므로 랭킹 리스트에 올라갈 수 없다. 따라서 이 경우에도 -1을 출력한다.
- 근데 코드1을 실행한 결과
ValueError
(참조 불가)가 출력되었다. 그 이유는 아래의 테스트케이스를 통해서 살펴보자.
입력
9 5 10
10 10 10 9 9 8 7 6 6
출력
10
ValueError
가 발생한 것이다.N, new_score, P = map(int, input().split())
score = list(map(int, input().split()))
if N == 0:
print(1)
else:
for i in range(len(score)):
if score[i] < new_score:
score.insert(i, new_score)
break
rank = score.index(new_score) + 1
if rank > P:
print(-1)
else:
if N == P and new_score == score[-1]:
print(-1)
else:
print(rank)
ValueError
를 수정하기 위해서 for문을 지우고 아예append
로 추가해준 다음sort(reverse=True)
를 이용해서 내림차순 정렬을 해주고 동점 점수대라면 동점 점수중에서 가장 마지막에 위치한 점수를 인덱스로 찾아내어 경우에 해당하는 실행문을 실행할 수 있도록 코드를 재작성했다.
N, new_score, P = map(int, input().split())
if N == 0:
print(1)
else:
score = list(map(int, input().split()))
score.append(new_score)
score.sort(reverse=True)
rank = score.index(new_score) + 1
if rank > P:
print(-1)
else:
if N == P and new_score == score[-1]:
print(-1)
else:
print(rank)