728x90
https://www.acmicpc.net/problem/1205
문제 분석
비오름차순으로 저장되어 있는 점수들 사이에 태수의 새로운 점수를 끼워넣는 문제.
P가 주어지면 P는 랭킹 리스트의 길이이며,
새로운 점수가 점수 리스트에 들어간 뒤 새로운 점수의 앞에 점수가 P개 이상일 경우 -1을 출력한다.
새로운 점수가 리스트에 들어갈 때 같은 점수가 있다면 같은 점수의 맨 뒤에 들어가게 된다.
또한, N이 0보다 클 경우만 점수 리스트를 입력받는다.
if n > 0:
...
else:
...
n을 기준으로 분기가 필요하다.
새로운 점수를 넣을 때 큰 점수와 같은 점수의 뒤에 와야 하기 때문에 랭킹을 계속 늘려주고 작을 경우에 종료하면 된다.
하지만 랭킹은 같은 점수일 경우 증가하지 않아야 하기 때문에 클 경우에만 랭킹을 늘려주는 과정을 거친다.
for i in range(n):
if new_point < score[i]:
rank += 1
elif new_point > score[i]:
break
P를 판단해주어야 한다. 반복문을 돌 때 만약 인덱스가 P - 1이라면 작은 점수를 만나지 못해 break 문에 걸리지 않았고,
최대 랭킹 길이인 P개가 이미 존재하기 때문에 -1을 출력해야 한다.
for i in range(n):
...
if i == p - 1:
rank = -1
코드
더보기
n, new_point, p = map(int, input().split())
if n > 0:
score = list(map(int, input().split()))
rank = 1
for i in range(n):
if new_point < score[i]:
rank += 1
elif new_point > score[i]:
break
if i == p - 1:
rank = -1
print(rank)
else:
print(1)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Python] 1958번: LCS 3 (0) | 2023.01.31 |
---|---|
[백준/Python] 2961번: 도영이가 만든 맛있는 음식 (0) | 2023.01.30 |
[백준/Python] 2448번: 별 찍기 - 11 (0) | 2023.01.26 |
[백준/Python] 2866번: 문자열 잘라내기 (0) | 2023.01.24 |
[백준/Python] 14938번: 서강그라운드 (0) | 2023.01.21 |