문제링크 : https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int arr[50];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N, NEW, P;
cin >> N >> NEW >> P;
for(int i=0; i<N; i++)
{
cin >> arr[i];
}
int idx = 1; //등수
for(int i=0; i<N; i++)
{
if(NEW < arr[i]) idx++; //등수내려감
else break;
}
if(N==P && arr[N-1] >= NEW) idx=-1; //랭킹 리스트에 못올라가는 경우
cout << idx;
return 0;
}
주어진 점수가 랭킹 리스트에 못 올라가는 경우는 N과 P가 같은데 맨 마지막 수가 주어진 점수보다 크거나 같을 때이다.
이 경우 주어진 점수가 맨 마지막 수보다 작거나 같기에 랭킹 밖으로 밀려날 수 밖에 없다.
이외에는 배열의 현재 값과 주어진 점수를 비교하며 등수를 하나씩 내려주면 된다.
처음에 N이 P보다 큰 경우에도 랭킹 밖으로 밀려나는 경우가 있으므로 이를 고려하며 풀었었는데, 문제를 다시 보니 N이 P보다 작거나 같다고 명시되어있었다.
덕분에 이 문제를 풀면서 문제를 처음부터 끝까지 꼼꼼히 읽어야한다는 것을 다시 한번 느끼게 된 것 같다.
'백준 > 실버' 카테고리의 다른 글
[백준 1946번] 신입 사원 (C++) (0) | 2023.09.15 |
---|---|
[백준 1254번] 팰린드롬 만들기 (C++) (0) | 2023.09.05 |
[백준 17413번] 단어 뒤집기 2 (C++) (0) | 2023.08.29 |
[백준 1515번] 수 이어 쓰기 (C++) (0) | 2023.08.28 |
[백준 28293번] 자릿수 (C++) (0) | 2023.08.13 |