풀이
N>0 일때 N개의 점수 만큼 랭킹 리스트 채워 넣음 (내림차순)
랭킹 리스트 최대 사이즈 : P
N=0일때(리스트에 아무것도 없을때) 10<=p<=50 이므로 송유진 점수는 무조건 1등
* 만약 현재 사이즈가 P와 같다면
- 중간의 점수라면 넣고 맨 뒤 점수는 out
- 맨 마지막 점수와 같거나 작으면 -1(랭킹에서 out)
=> 배열크기 N 과 랭킹최대크기 P가 같으면서 ,
랭킹 리스트의 가장 작은 순위보다 새로운 스코어가 작다면 랭킹에 진입X
그 외에는 ranklist의 첫번째 인덱스의 수 와 score을 비교해서
score가 더 작다면 등수(rank)가 높아진다 즉, 100은 1등 90은 2등이므로
ranklist의 첫번째 인덱스의 수 100은 score=90 과 비교해서 score가 더 작은 수이니
2등이 되어야 한다 등수(rank)+1
그 다음 ranklist의 인덱스 수와 비교하여 score가 더 커질때 등수(rank) 변화 없이 반복문 빠져나온다.
( 제일 처음 score 수가 제일 크면 1등이여야 하므로 등수(rank) 초기 값은 1로 설정해줌)
java 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int score = sc.nextInt(); int P = sc.nextInt(); int[] ranklist = new int[N]; int rank = 1; //등수 for (int i = 0; i < N; i++) { ranklist[i] = sc.nextInt(); } // 배열크기 N 과 랭킹최대크기 P가 같으면서 , // 랭킹 리스트의 가장 작은 순위보다 새로운 스코어가 작다면 랭킹에 진입X if(N==P && score<=ranklist[ranklist.length-1]) System.out.println(-1); else{ for(int i=0; i<ranklist.length; i++){ if(score < ranklist[i]) rank++; // 100(1등) 90(2) else break; // 1등 } System.out.println(rank); } } } | cs |
728x90
반응형
'자료구조+알고리즘 > BOJ' 카테고리의 다른 글
[18111][java][백준]마인크래프트 (0) | 2021.10.24 |
---|---|
[1966][java][백준]프린터큐 (0) | 2021.10.24 |
[1173][java][백준][브론즈Ⅱ]운동 (0) | 2021.10.15 |
[1152][java][백준][브론즈Ⅱ]단어의 개수 (0) | 2021.10.15 |
[1100][java][백준][브론즈Ⅱ]하얀칸 (0) | 2021.10.15 |