일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- staged
- 응답코드
- 비동기
- JSP
- 17822
- HTTP
- 달팽이는올라가고싶다
- npm
- Ajax
- 백준
- node.js
- 소형기관차
- 카카오코드페스티벌
- Git
- 2869
- 파핑파핑지뢰찾기
- 17471
- boj
- 알고리즘
- GitHub
- graph
- 1868
- SWEA
- SOCKET
- react
- Java
- JavaScript
- web
- commited
- 타겟넘버
- Today
- Total
devlog
[BOJ] 백준 15953 상금헌터(카카오코드페스티벌)-java 본문
문제
2017년에 이어, 2018년에도 카카오 코드 페스티벌이 개최된다!
카카오 코드 페스티벌에서 빠질 수 없는 것은 바로 상금이다. 2017년에 개최된 제1회 코드 페스티벌에서는, 본선 진출자 100명 중 21명에게 아래와 같은 기준으로 상금을 부여하였다.
순위 | 상금 | 인원 |
---|---|---|
1등 | 500만원 | 1명 |
2등 | 300만원 | 2명 |
3등 | 200만원 | 3명 |
4등 | 50만원 | 4명 |
5등 | 30만원 | 5명 |
6등 | 10만원 | 6명 |
2018년에 개최될 제2회 코드 페스티벌에서는 상금의 규모가 확대되어, 본선 진출자 64명 중 31명에게 아래와 같은 기준으로 상금을 부여할 예정이다.
순위 | 상금 | 인원 |
---|---|---|
1등 | 512만원 | 1명 |
2등 | 256만원 | 2명 |
3등 | 128만원 | 4명 |
4등 | 64만원 | 8명 |
5등 | 32만원 | 16명 |
제이지는 자신이 코드 페스티벌에 출전하여 받을 수 있을 상금이 얼마인지 궁금해졌다. 그는 자신이 두 번의 코드 페스티벌 본선 대회에서 얻을 수 있을 총 상금이 얼마인지 알아보기 위해, 상상력을 발휘하여 아래와 같은 가정을 하였다.
-
제1회 코드 페스티벌 본선에 진출하여 a등(1 ≤ a ≤ 100)등을 하였다. 단, 진출하지 못했다면 a = 0으로 둔다.
-
제2회 코드 페스티벌 본선에 진출하여 b등(1 ≤ b ≤ 64)등을 할 것이다. 단, 진출하지 못했다면 b = 0으로 둔다.
제이지는 이러한 가정에 따라, 자신이 받을 수 있는 총 상금이 얼마인지를 알고 싶어한다.
입력
첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다.
다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. 각 줄에는 두 개의 음이 아닌 정수 a(0 ≤ a ≤ 100)와 b(0 ≤ b ≤ 64)가 공백 하나를 사이로 두고 주어진다.
출력
각 가정이 성립할 때 제이지가 받을 상금을 원 단위의 정수로 한 줄에 하나씩 출력한다. 입력이 들어오는 순서대로 출력해야 한다.
문제: https://www.acmicpc.net/problem/15953
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 |
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int Line=in.nextInt();
if(Line>=1&&Line<=1000) {
int[][] rank=new int[Line][2];
int[] money=new int[Line];
for(int i=0; i<Line; i++) {
for(int j=0; j<2; j++) {
rank[i][j]=in.nextInt();
}
}
for(int i=0; i<Line; i++) {
if(rank[i][0]>0) {
if(rank[i][0]==1) {
money[i] +=5000000;
}else if(rank[i][0]<=3) {
money[i] +=3000000;
}else if(rank[i][0]<=6) {
money[i] +=2000000;
}else if(rank[i][0]<=10) {
money[i] +=500000;
}else if(rank[i][0]<=15) {
money[i] +=300000;
}else if(rank[i][0]<=21) {
money[i] +=100000;
}
}
}
for(int i=0; i<Line; i++) {
if(rank[i][1]>0) {
if(rank[i][1]==1) {
money[i] +=5120000;
}else if(rank[i][1]<=3) {
money[i] +=2560000;
}else if(rank[i][1]<=7) {
money[i] +=1280000;
}else if(rank[i][1]<=15) {
money[i] +=640000;
}else if(rank[i][1]<=31) {
money[i] +=320000;
}
}
}
for(int i=0; i<Line; i++) {
System.out.println(money[i]);
}
}
}
} |
cs |
풀이
일단 몇개의 라인을 받을지 사용자가 첫번째 줄에 입력해주기때문에 변수로 그 입력을 받은뒤 그만큼 반복하여 라인을 받습니다.
rank라는 이차원배열은 처음 사용자가 입력한 Line이라는 변수만큼의 행이 있고 2개의 열이 있습니다.
2개의 열의 첫번째에는 1차 코드페스티벌의 등수가 들어있고 두번째 열에는 2차 코드페스티벌의 등수가 들어있습니다.
코드 페스티벌은 1차와 2차의 상금과 상금수혜자의 인원이 다르기 때문에 1차와 2차를 분리해서 조건문을 만들었습니다.
rank의 i행 0,1열의 등수에 해당하는 상금을 money의 i행에 더해줍니다.
본선에 진출하지 못했다면 등수는 0이 되기때문에 등수(rank)가 1이상일 경우에만 money값을 바꿔줍니다.
마지막으로 money라는 배열에 있는 행을 차례대로 출력해줍니다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 백준 15954 인형들(카카오코드페스티벌)-java (1) | 2019.03.10 |
---|---|
[BOJ] 백준 10250 ACM호텔-java (395) | 2018.12.05 |
[BOJ] 백준 1193 분수찾기-java (350) | 2018.12.04 |
[BOJ] 백준 2292 벌집-java (415) | 2018.12.04 |
[BOJ] 백준 1924 2007년 -java (408) | 2018.11.23 |