[C++] 백준 1205번 풀이 (등수 구하기)

정민경·2023년 2월 23일
0

baekjoon

목록 보기
35/57
post-thumbnail

- 문제 (1205번) : 등수 구하기

  • 랭킹 리스트와 새로운 점수가 주어졌을 때 새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램.
    ( 만약 점수가 랭킹 리스트에 올라갈 수 없을 정도로 낮다면 " -1 " 출력. )

- 입력 및 출력

[ 입력 ]

  • 첫째 줄에 랭킹 리스트에 저장되어있는 점수의 개수 N, 새로운 점수, 랭킹 리스트에 올라갈 수 있는 개수 P 입력
  • 둘째 줄에 랭킹리스트에 있는 N 개의 수 내림차순으로 입력

    [ 입력 제한 ]

    • 1 ≤ N ≤ P
    • 10 ≤ P ≤ 50
    • 모든 점수 ≤ 2,000,000,000 , 자연수 || 0

[ 출력 ]

  • 새로운 점수가 랭킹 리스트에서 몇 등인지 출력

- 문제 풀이

  • 이 문제는 정렬이 필요할 것 같지만 랭킹리스트 입력을 받을 때부터 내림차순으로 정렬되어있으므로 정렬할 필요가 없다.

  • N 개의 수를 입력받아서 리스트의 처음, 즉 가장 큰 수부터 새로운점수를 비교해가며 list의 수보다 새로운점수가 작다면 rank를 1 증가하고, 그렇지 않다면 for문을 탈출하는 방법으로 해결했다.

  • ranking list 에서 동점이라면 그 중 작은 랭킹으로 저장하고, 그 후 작은 수가 나왔을때는 다시 원래의 랭킹으로 구해야 하므로 count 라는 새로운 변수를 비교할 때마다 1씩 증가하도록 하였다.

  • 이렇게 비교 후 count 와 P 가 같다면 , 다시말해 끝까지 비교해봤지만 그것보다 작은 경우 랭킹리스트에 올라갈 수 없으므로 -1 을 출력한다.

  • 만약 N 이 0이라면, 즉 아직 랭킹리스트에 점수가 하나도 없다면 새로운 점수는 입력 즉시 첫번째 점수가 되므로 1 출력한다.


- 최종 코드

0개의 댓글