알고리즘/카카오 코드 페스티벌예선 2018
[백준 15953] - [카카오 코드 페스티벌 예선 2018] - 상금헌터 (JAVA)
팡스
2018. 12. 4. 17:01
문제 링크 : https://www.acmicpc.net/problem/15953
내 실력이 어디까지인지 확인해보고자 카카오 코드 페스티벌 예선 문제를 풀었다.
아직은 카카오에 갈 실력이 안되나보다.
그나마 이 문제는 쉽다.
2017년 본선진출자 100명 중 상금 수여 21명
순위 | 상금 | 인원 |
1등 | 500만 | 1 |
2등 | 300만 | 2 |
3등 | 200만 | 3 |
4등 | 50만 | 4 |
5등 | 30만 | 5 |
6등 | 10만 | 6 |
2018년 본선진출자 64명 중 상금 수여 31명
순위 | 상금 | 인원 |
1등 | 512만 | 1 |
2등 | 256만 | 2 |
3등 | 128만 | 4 |
4등 | 64만 | 8 |
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 = {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}; 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 |