문제
상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.
상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.
입력
8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.
출력
첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.
풀이
금방 끝날줄 알았는데 생각보다 깔끔하게 나오지는 않은 것 같다. 우선 배열을 3개를 사용했는데, 8개의 정수를 입력받는 배열 1개, 이 배열은 오름차순 정렬을 해줄 예정이었기 때문에 정렬되지 않은 본래의 배열 1개, 그리고 높은 5개의 점수를 모아둔 길이 5 배열 1개이다.
뭐 위에 설명해준대로 배열을 3개 만든뒤 원래 배열과 max[]배열을 비교해서 앞에서부터 출력하면 되는 문제이다. sum은 max 배열의 합으로 중간에 구하면 끝 ㅇㅅㅇ.
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
|
class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int [] arr= new int[8];
for(int i=0;i<8;i++) {
arr[i]=sc.nextInt();//입력
}
int [] idx=new int[8];
int [] max=new int[5];
int cnt=0;
for(int i=0;i<8;i++) {
idx[cnt]=arr[i];
cnt++;
}
cnt=0;
int sum=0;
for(int i=3;i<8;i++) {
max[cnt]=arr[i];
sum+=max[cnt];
cnt++;
}
System.out.println(sum);
for(int i=0;i<8;i++) {
for(int j=0;j<5;j++) {
if(idx[i]==max[j]) {
System.out.print(i+1+" ");
}
}
}
}
}
|
https://www.acmicpc.net/problem/2822
'Algorithms > BOJ[Java]' 카테고리의 다른 글
[백준/10709번] 기상캐스터(JOI 2015)[Java] (0) | 2019.12.17 |
---|---|
[백준/3034번] 앵그리 창영(COCI 2006/2007) [Java] (0) | 2019.12.17 |
[백준/2525번] 오븐 시계(한국정보올림피아드)[Java] (0) | 2019.12.14 |
[백준/12354번] Ocean View(Small)(Code Jam for Veterans 2013)[Java] (0) | 2019.12.13 |
[백준/2480번] 주사위 세개 (한국 올림피아드 2010 중등부)[Java] (0) | 2019.12.12 |