[BOJ] 1205. 등수 구하기

Jimeaning·2023년 12월 26일
0

코딩테스트

목록 보기
137/143

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가 같고, 랭킹 리스트의 마지막 점수가 새로운 점수보다 크거나 같으면 랭킹에 올라갈 수 없다.
  • 랭킹에 올라갈 수 있다면, 두 가지 경우가 있다.
    1. 반복문을 다 돌아도 점수가 들어갈 수 없으면 맨 뒤에 위치하게 될 것이다.
    2. 새로운 점수가 랭킹 리스트 점수보다 크거나 같을 때, 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)

피드백

하나씩 어긋나서 맞추는 것이 조금 까다로웠다.

profile
I mean

0개의 댓글