본문 바로가기

자료구조+알고리즘/BOJ

[1205][java][백준][실버Ⅴ]등수구하기


풀이

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==&& 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
반응형