관리 메뉴

SW

[백준 15953] 상금 헌터 본문

대학교/Algorithm

[백준 15953] 상금 헌터

SWKo 2020. 2. 17. 20:35

0. 제목

  • 백준 15953 상금 헌터
  • BOJ 15953 상금 헌터
  • C++ 15953 상금 헌터

1. 문제

https://www.acmicpc.net/problem/15953


2. 풀이

  • 조건문으로 범위를 지정하는 방식으로 구현하는 것도 가능하다.
  • 아래 풀이는 다른 방식이다.
  • 처음에는 각 등수별로 지정되는 인원들을 vector에 담으려고 하였으나 풀다보니 vector가 필요없었다.
  • 상금을 배열에 담아두고 등수와 등수에 할당 된 인원수에 대한 반복문을 이용하였다.
  • 입력받은 등수에 해당하는 등수와 상금배열의 인덱스의 관계를 이용해 같으면 변수 firstGet, secondGet에 담았다.
  • 합에 10000을 곱해주면 상금의 합이 구해진다.

3. 코드

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
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
 
int main(int argc, const char * argv[]) {
    int T;
    int a = 0;
    int b = 0;
    int rank = 1;
    int firstReward[6= {500300200503010};
    int firstGet = 0;
    int secondReward[5= {5122561286432};
    int secondGet = 0;
    //vector<int> v[8];
    cin >> T;
    
    for(int i = 0; i < T; i++){
        cin >> a >> b;
        rank = 1;
        firstGet = 0;
        for(int j = 1; j <= 6; j++){
            for(int k = 1; k <= j; k++){
                //v[j].push_back(rank);
                if(a == rank){
                    firstGet = firstReward[j-1];
                }
                rank++;
            }
        }
        
        rank = 1;
        secondGet = 0;
        for(int j = 0; j <= 4; j++){
            for(int k = 1; k <= pow(2,j); k++){
                //v[j].push_back(rank);
                if(b == rank){
                    secondGet = secondReward[j];
                }
                rank++;
            }
        }
        
        cout << (firstGet + secondGet) * 10000 << '\n';
    }
    return 0;
}
 
 

'대학교 > Algorithm' 카테고리의 다른 글

[백준 1197] 최소 스패닝 트리  (0) 2020.02.19
[백준 1476] 날짜 계산  (0) 2020.02.19
[백준 2133] 타일 채우기  (0) 2020.02.17
[백준 4963] 섬의 개수  (0) 2020.02.16
[백준 1966] 프린터 큐  (0) 2020.02.16
Comments