반응형

15953번 문제 상금헌터


처음에 문제가 길어서 무서웠는데 생각보다 별거없던 문제
아직 티어가 낮아서 할만한거만 나오는듯

생각
1회 100명중 21명에게 상금부여
2회 64명중 31명에게 상금부여

각 등수에 맞는 명수로 조건걸고 조건에 따라서 상금을 더해 배열에 저장

 

-------

hint

 

배열은 [1000]
첫줄입력 : 가정횟수 t 1이상 1000이하
t의 갯수만큼 : 두개의 정수 100이하 / 64이하

1회차 : 1 3 6 10 15 21

2회차 : 1 3 7 15 31

--------

반응형

Solution

 

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.Scanner;
 
public class Main {
 
    static int prize(int a, int b){
        int[] prizeOne = {500000030000002000000500000300000100000};
        int[] prizeTwo = {512000025600001280000640000320000};
        int prize = 0;
        
        if(a <= 21) {
            if(a == 1) {
                prize += prizeOne[0];
            }else if(a <= 3 && a > 1) {
                prize += prizeOne[1];
            }else if(a <= 6 && a > 3) {
                prize += prizeOne[2];
            }else if(a <= 10 && a > 6) {
                prize += prizeOne[3];
            }else if(a <= 15 && a > 10) {
                prize += prizeOne[4];
            }else if(a <= 21 && a > 15) {
                prize += prizeOne[5];
            }
        }
        if(b <= 31) {
            if(b == 1) {
                prize += prizeTwo[0];
            }else if(b <= 3 && b > 1) {
                prize += prizeTwo[1];
            }else if(b <= 7 && b > 3) {
                prize += prizeTwo[2];
            }else if(b <= 15 && b > 7) {
                prize += prizeTwo[3];
            }else if(b <= 31 && b > 15) {
                prize += prizeTwo[4];
            }
        }
        
        if(prize > 0) {
            return prize;
        }
        return 0;
    }
    
    public static void main(String[] args) {
        int[] arr = new int[1000];
        int count = 0;
        int t = 0;
        int a = 0;
        int b = 0;
        Scanner sc = new Scanner(System.in);
        
        t = sc.nextInt();
        
        for(int i = 0; i < t; i++) {
            a = sc.nextInt();
            b = sc.nextInt();
            
            arr[i] = prize(a, b);
            count++;
        }
        
        for(int i = 0; i < count; i++) {
            System.out.println(arr[i]);
        }    
    }
}
 
cs


첫번째 런타임에러 - 배열범위를 100으로 만들었었음. 조건 확인 잘하기
두번째 실패 - cashprize의 범위설정을 잘못했음. 범위 명확히 조절함
세번째 성공 - 속도 344ms 겁나느림.(클래스 생성해서 계산메소드를 만들었는데 이게 느린거같아 수정해봤음)
네번째 성공 - 속도 340ms 메서드를 같은 클래스 내에 지정해서 static선언 후 돌려봄 ㅋㅋㅋ이게 차이가 있는건지 모르겠음

 

 

 

 

 

 

이정도면 티어 한단계만 올려볼까..?

 

반응형

+ Recent posts