-
[백준 15953] - [카카오 코드 페스티벌 예선 2018] - 상금헌터 (JAVA)알고리즘/카카오 코드 페스티벌예선 2018 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일 경우 예외처리를 해주면 된다.
이 문제는 자신감을 갖게 해주기위한 문제였으리라 생각한다.
소스
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import 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 '알고리즘 > 카카오 코드 페스티벌예선 2018' 카테고리의 다른 글
[백준 15954] - [카카오 코드 페스티벌 2018 예선] - 인형들 (JAVA) (0) 2018.12.04 댓글