728x90
문제
https://www.acmicpc.net/problem/1205
📌 알고리즘 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String firstLine = br.readLine();
StringTokenizer st = new StringTokenizer(firstLine, " ");
// 현재 랭킹 리스트 점수 개수
int N = Integer.parseInt(st.nextToken());
// 새로운 점수
long newScore = Long.parseLong(st.nextToken());
// 랭킹 리스트에 등극할 수 있는 점수 개수
int P = Integer.parseInt(st.nextToken());
// 새로운 점수의 랭킹 등수
int rank = 1;
// 현재 랭킹 리스트의 점수 개수가 0개인 경우
if(N ==0) {
// 무조건 1등으로 등극된다.
System.out.println(rank);
return;
}
String secondLine = br.readLine();
st = new StringTokenizer(secondLine, " ");
// 기존의 랭킹 리스트들의 점수를 담을 배열
long[] arr = new long[N];
for(int i=0; i<N; i++) {
arr[i] = Long.parseLong(st.nextToken());
}
/**
* 랭킹 등극 실패 조건 체크
*/
// N == P 같을 경우 랭킹 리스트의 가장 낮은 점수와 새 점수 비교
if(N==P) {
// 새로운 점수가 랭킹 리스트의 가장 낮은 점수보다 같거나 낮을 경우 등극 실패
if(arr[N-1] >= newScore) {
System.out.println("-1");
return;
}
}
/**
* 랭킹 등극 성공
*/
// 기존 랭킹 리스트 점수 조회
for(int i=0; i<N; i++) {
// 새로운 점수가 기존 랭킹의 점수보다 높거나 같을 경우 반복문 탈출
if(arr[i]<=newScore) break;
// 기존 점수가 새로운 점수보다 높을 경우 등수 1씩 추가
rank++;
}
System.out.println(rank);
}
}
728x90
'[알고리즘] > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 16967번 : 배열 복원하기 (실버3) (0) | 2022.04.18 |
---|---|
[알고리즘] 백준 1268번 : 임시 반장 정하기 (브론즈1) (0) | 2022.04.18 |
[알고리즘] 백준 17389번 : 보너스 점수 (브론즈2) (0) | 2022.04.15 |
[알고리즘] 백준 10859번 : 뒤집어진 소수 (0) | 2022.04.14 |
[알고리즘] 백준 1644번 : 소수의 연속합 (0) | 2022.04.14 |