별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다. 


상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.

 

 

입력

8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.

 

 

출력

첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.


 

예제 입력 1

 20

 30

 50

 48

 33

 66

 0

 64

 

예제 출력 1

 261

 3 4 5 6 8

 

 

출처

Contest > Croatian Open Competition in Informatics > COCI 2011/2012 > Contest #2 1번

· 문제를 번역한 사람: baekjoon

· 잘못된 데이터를 찾은 사람: devetude

 


알고리즘 분류

· 구현

· 반복문

 

 

코드

 

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
#include <iostream>
#include <algorithm>
using namespace std;
 
#define N 9
 
int main() {
    int score[N], tmp[N], sum;
    
    for (int i = 0; i < 8; i++) {
        cin >> score[i];
        tmp[i] = score[i];
    }
    
    sort(tmp, tmp + 8);    // 오름차순으로 정렬
    
    sum = tmp[7+ tmp[6+ tmp[5+ tmp[4+ tmp[3];
    cout << sum << endl;
    for (int i = 0; i < 8; i++) {
        for (int j = 3; j <= 7; j++) {
            if (score[i] == tmp[j]) {
                cout << i + 1 << " ";
                continue;
            }
        }
    }
    cout << endl;
    
    return 0;
}






우선 총 8개의 점수를 score 배열, score 배열과 유사한 tmp 배열에 각각 넣는다.

sort() 함수를 이용하여 tmp 배열 안의 요소들을 오름차순으로 정렬한다.

가장 높은 점수 5개는 tmp 배열의 마지막 인덱스(7) ~ 마지막 인덱스-4(3) 위치에 위치하게 될 것이며, 이 5개의 합을 sum이라는 변수에 대입한다. 그리고 sum의 값을 출력한다.

score 배열을 순회하면서 tmp 배열의 인덱스가 3부터 7까지인 곳에 위치한 요소들과 같을 경우(가장 높은 점수 5개), 해당 score 배열의 인덱스와 1을 합한 값을 출력한다. (배열의 인덱스는 0부터 시작하므로.)


score [20] [30] [50] [48] [33] [66] [0] [64]

tmp . [20] [30] [50] [48] [33] [66] [0] [64]

                             

score [20] [30] [50] [48] [33] [66] [0] [64]

tmp . [0] [20] [30] [33] [48] [50] [64] [66]

                            

score [20] [30] [50] [48] [33] [66] [0] [64]

tmp . [0] [20] [30] [33] [48] [50] [64] [66]

                            

score [20] [30] [50] [48] [33] [66] [0] [64]

tmp . [0] [20] [30] [33] [48] [50] [64] [66]

                            

sum = tmp[3] + tmp[4] + tmp[5] + tmp[6] + tmp[7] = 261

indexes of scores in score[] : 2, 3, 4, 5, 7


Output :

261

3 4 5 6 8 


728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ16430][C++] 제리와 톰  (0) 2018.11.13
[BOJ1748][C++] 수 이어 쓰기 1  (0) 2018.10.03
[BOJ2884][C++] 알람 시계  (0) 2018.10.03
[BOJ5063][C++] TGN  (0) 2018.10.03
[BOJ10707][C++] 수도요금  (0) 2018.10.03
[BOJ5597][C++] 과제 안 내신 분..?  (0) 2018.10.02
[BOJ5543][C++] 상근날드  (0) 2018.10.01
[BOJ2490][C++] 윷놀이  (0) 2018.10.01
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖