ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 15953] - [카카오 코드 페스티벌 예선 2018] - 상금헌터 (JAVA)
    알고리즘/카카오 코드 페스티벌예선 2018 2018. 12. 4. 17:01

    문제 링크 : https://www.acmicpc.net/problem/15953



    내 실력이 어디까지인지 확인해보고자 카카오 코드 페스티벌 예선 문제를 풀었다. 

    아직은 카카오에 갈 실력이 안되나보다.


    그나마 이 문제는 쉽다. 


    2017년 본선진출자 100명 중 상금 수여 21명

    순위 

    상금 

    인원 

    1등 

    500만 

    2등 

    300만 

    3등 

    200만 

    4등 

    50만 

    5등 

    30만 

    6등 

    10만 



    2018년 본선진출자 64명 중 상금 수여 31명


    순위 

    상금 

    인원 

    1등 

    512만 

    2등 

    256만 

    3등 

    128만 

    4등 

    64만 

    5등 

    32만 

    16 



    이 문제를 풀기 위해서 위의 상금 정보를 기반으로 배열을 만들었다.


    public static int[] reward17 = {500, 300, 200, 50, 30, 10};

    public static int[] people17 = {1, 2, 3, 4, 5, 6};

    public static int[] reward18 = {512, 256, 128, 64, 32};

    public static int[] people18 = {1, 2, 4, 8, 16};


    배열을 기준으로 반복을 돌면서 입력받은 연도별 순위가 순위안에 속하면 상금을 추가했고 아니면 무시했다.


    이문제를 풀때 자세히 봐야하는문장은 단, 진출하지 못했다면 a=0으로 둔다. 이 문장이다.

    즉 a 혹은 b 값이 0일 경우 예외처리를 해주면 된다.


    이 문제는 자신감을 갖게 해주기위한 문제였으리라 생각한다.


    소스

    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
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
     
    public class Main {
        public static int[] reward17 = {500300200503010};
        public static int[] people17 = {123456};
        
        public static int[] reward18 = {5122561286432};
        public static int[] people18 = {124816};
        
        public static int TEN_THOUSAND = 10000;
        
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = null;
            
            int testCase = Integer.parseInt(br.readLine());
            
            StringBuilder sb = new StringBuilder();
            
            while(testCase-- > 0) {
                st = new StringTokenizer(br.readLine());
                
                int rank17 = Integer.parseInt(st.nextToken());
                int rank18 = Integer.parseInt(st.nextToken());
                
                int totalRank = getRank(rank17, rank18);
                
                sb.append(totalRank*TEN_THOUSAND + "\n");
            }
            System.out.println(sb.toString());
        }
        
        public static int getRank(int rank17, int rank18) {
            int totalReward = 0;
            
            int r = 0;
            for(int i=0; i < people17.length; i++) {
                r += people17[i];
                if(rank17 > 0 && rank17 <= r) {
                    totalReward += reward17[i];
                    break;
                }
            }
            
            r = 0;
            for(int i=0; i < people18.length; i++) {
                r+= people18[i];
                if(rank18 > 0 && rank18 <= r) {
                    totalReward += reward18[i];
                    break;
                }
            }
            
            return totalReward;
        }
    }
    cs





    댓글

Designed by Tistory.